Uitleg
De gegevens die je wilt zien staan vaak niet in één tabel.
Voorbeeld:
Stel dat je een overzicht wilt van alle artiesten en de titels van de albums die bij hen horen. Je moet dan gegevens uit twee verschillende tabellen 'vissen':
De naam van een artiest staat in
ArtistDe titel van een album staat in
Album
Als je die samen wilt zien, heb je een JOIN nodig. Met een JOIN koppel je twee of meerdere tabellen aan elkaar.
We bekijken even (een deel van) de tabellen Artist en Album.
Tabel Artist
Artist1
AC/DC
2
Accept
3
Queen
4
Coldplay
Tabel Album
Album1
For Those About To Rock
1
2
Balls to the Wall
2
3
Let There Be Rock
1
Als we deze tabellen zouden gaan JOIN'en dan zou het resultaat er als volgt uitzien:
1
AC/DC
1
For Those About To Rock
1
AC/DC
3
Let There Be Rock
2
Accept
2
Balls to the Wall
Opmerkingen:
We zien nu een grote tabel waar de albumtitels zijn gekoppeld aan de artiestgegevens.
AC/DC komt twee keer voor, omdat deze artiest twee albums heeft.
Accept komt één keer voor.
Queen en Coldplay ontbreken, omdat zij geen overeenkomend album hebben.
1. INNER JOIN
Je hebt verschillende soorten JOINS. Hierboven zie je een voorbeeld van een INNER JOIN. De bijbehorende query ziet er dan als volgt uit:
Het is een goed gebruik om vanaf nu ook de naam van de tabel te schrijven i.p.v. alleen de kolomnaam. Dus niet alleen ArtistId, maar Album.ArtistId. Dit is vooral belangrijk (en vereist) als een kolom in meerdere tabellen voorkomt. ArtistId komt namelijk zowel in de tabel Album voor als in de tabel Artist.
We zullen ook een paar andere joins bespreken.
2. LEFT JOIN
Wat doet een LEFT JOIN?
Een LEFT JOIN laat:
alles van de linkertabel zien
en alleen wat past uit de rechtertabel
Als er geen match is, komt er NULL.
Voorbeeld 2: Alle artiesten, ook zonder album
Het resultaat van deze query is:
AC/DC
For Those About To Rock
AC/DC
Let There Be Rock
Accept
Balls to the Wall
Queen
NULL
Coldplay
NULL
Opmerkingen:
Alle rijen uit
Artistblijven behouden (LEFT JOIN).AC/DC verschijnt twee keer omdat er twee albums bij passen.
Accept verschijnt één keer.
Queen en Coldplay hebben geen bijpassend album →
TitlewordtNULL.Dit is een heel mooi voorbeeld om te laten zien dat een LEFT JOIN niet filtert op matches, maar alles van links bewaart.
3. RIGHT JOIN
Een RIGHT JOIN combineert rijen uit twee tabellen, maar alle rijen uit de rechtertabel blijven altijd behouden.
Daarbij geldt:
Voor elke rij in de rechtertabel wordt gezocht naar een rij in de linkertabel
Als er een passende rij is, worden de gegevens gecombineerd
Als er geen passende rij is:
blijven de gegevens uit de rechtertabel staan
en worden de kolommen uit de linkertabel
NULL
Je kunt het zo verwoorden:
“Laat alles van rechts zien, ook als links niets past.”
Vergelijking met LEFT JOIN
Een RIGHT JOIN doet eigenlijk hetzelfde als een LEFT JOIN, maar dan met de rollen omgedraaid:
LEFT JOIN→ alles van linksRIGHT JOIN→ alles van rechts
Daarom wordt een RIGHT JOIN vaak vervangen door:
de tabellen om te draaien
en een LEFT JOIN te gebruiken
Het resultaat blijft dan hetzelfde, maar de query is vaak duidelijker.
Query:
Het resultaat van deze query is:
AC/DC
For Those About To Rock
Accept
Balls to the Wall
AC/DC
Let There Be Rock
Alle rijen uit
Albumblijven behouden (RIGHT JOIN).Voor elk album wordt de bijbehorende artiest opgezocht.
In deze data heeft elk album een bijpassende artiest, dus er komen geen
NULL-waarden voor.
4. Meerdere JOIN's
Een JOIN is niet beperkt tot twee tabellen. Je kunt meerdere JOINs achter elkaar gebruiken om informatie uit drie of meer tabellen te combineren.
Het belangrijkste idee is:
Je bouwt het resultaat stap voor stap op.
Bij JOINs over meerdere tabellen:
Begin je met één tabel
JOIN je een tweede tabel → je krijgt een tussentabel
JOIN je een derde tabel aan dat resultaat
Enzovoort…
Elke JOIN:
voegt kolommen toe
kan het aantal rijen veranderen
Algemene structuur
Lees dit als:
Neem TabelA, koppel daar TabelB aan en koppel aan dát resultaat TabelC, enzovoort.
Een voorbeeld van een JOIN met drie tabellen:
Last updated
Was this helpful?