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 Artist

  • De 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

ArtistId
Name

1

AC/DC

2

Accept

3

Queen

4

Coldplay

Tabel Album

AlbumId
Title
ArtistId

1

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:

ArtistId
Name
AlbumId
Title

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:

Name
Title

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 Artist blijven 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 → Title wordt NULL.

  • 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 links

  • RIGHT 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:

Name
Title

AC/DC

For Those About To Rock

Accept

Balls to the Wall

AC/DC

Let There Be Rock

  • Alle rijen uit Album blijven 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:

  1. Begin je met één tabel

  2. JOIN je een tweede tabel → je krijgt een tussentabel

  3. JOIN je een derde tabel aan dat resultaat

  4. 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?