Geef eens een voorbeeld van een join methode en een subselect methode voor een select met een conditie op de subselect?


  • Geef alle cursussen (code en naam) die cursus DW als voorkennis eisen.
    Er worden gegevens gevraagd uit de tabel Cursus, maar de conditie
    ‘voorkennis DW ’ heeft betrekking op tabel Voorkenniseis. Zo’n situatie
    vraagt bijna om een stapsgewijze aanpak. Als eerste stap noteren we:


    select code, naam
    from Cursus
    where code in (verzameling codes van cursussen met voorkennis DW)

    De operator in is de verzamelingenoperator ‘element van’ (zie
    leereenheid 4, paragraaf 6.7). De linker operand is een waarde, de rechter
    operand is een verzameling.
    We vervangen nu de natuurlijke-taalexpressie door een subselect met
    commentaar:


    select code, naam
    from Cursus
    where code in (-- verzameling codes van cursussen met voorkennis DW
    select cursus
    from Voorkenniseis
    where voorkennis = 'DW');


    Resultaat:

    CODE NAAM
    ====== =========
    DB Databases


    Als tweede oplossing geven we een join. Nu hanteren we geen
    stapsgewijze aanpak, maar gaan ervan uit dat de join van Cursus en
    Voorkenniseis voldoende is voor zowel de gevraagde gegevens als de
    conditie:


    select C.code, C.naam
    from Cursus C
    join Voorkenniseis V on C.code = V.cursus
    where V.voorkennis = 'DW';


    Merk op dat ook hier beide oplossingen hetzelfde navigatiepad hebben:
    het start in tabel Cursus en loopt naar Voorkenniseis. Dat is: van boven
    naar beneden (‘van één naar veel’). In leereenheid 6 gebruikten we die
    navigatierichting om statistische gegevens op te halen. Hier is dat anders:
    het meervoud (‘veel’) heeft hier betrekking op een verzameling, waarvan
    wordt geëist dat een bepaalde waarde daar een element van is.

    Rapporteer Plaats commentaar