INNER JOIN
Last updated
Was this helpful?
Last updated
Was this helpful?
Deze is in het eerste semester al aan bod gekomen. We herhalen hem hier en we introduceren een Venn diagram als visueel geheugensteuntje. Let op: het Venn diagram mag je niet lezen als twee verzamelingen records en hun doorsnede. Het heeft hier een andere betekenis!
Lees ook de commentaar in elk gegeven stukje code! Deze bevat zeer belangrijke informatie.
We combineren informatie uit twee tabellen: de linkertabel (A
) en de rechtertabel (B
). We zeggen dat er overlapping is tussen de tabellen als de gebruikte sleutelkolommen dezelfde waarde bevatten. Het stuk van A
dat we bekijken (A.Id
) matcht met het stuk van B
dat we bekijken (B.A_Id
) en dat tekenen we als een overlappend gedeelte.
Het diagram met de naam A
staat voor de tabel Boeken
en met de naam B voor Personen
. We veronderstellen dat één auteur meerdere boeken kan hebben maar niet omgekeerd, dus de vreemde sleutel moet wel in Boeken
staan. Bij elk boek staat dus een nummer dat uitdrukt: "dit boek is geschreven door persoon nummer ..."
Selecteer alle boeken en toon de voornaam en de familienaam van de auteur.
Elke rij uit de tabel Boeken
wordt gecombineerd met elke rij uit de tabel Personen
en de combinaties waarin een match wordt gevonden tussen Personen_Id
en Personen.Id
worden overgehouden. Indien er geen match is wordt de gecombineerde rij genegeerd.
Het resultaat is een nieuwe tabel, dus je kan er verder mee werken zoals je altijd gedaan hebt. We ordenen de lijst op Familienaam
, Voornaam
, Titel
.
Je mag trouwens na FROM
een haakje openen en voor ORDER BY
het haakje weer sluiten als je dat makkelijker vindt.
We voegen een nieuwe persoon toe in de tabel Personen
:
We selecteren alle personen geordend op Familienaam
en Voornaam
:
En we zien dat Simone De Beauvoir is toegevoegd.
Alle auteurs en hun boeken te selecteren, maar ordenen de lijst nu op Familienaam
, Voornaam
en Titel
:
Nu merken we dat Simone De Beauvoir niet meer in de lijst voorkomt. Dat komt doordat er voor Simone de Beauvoir geen boeken in de boekentabel zijn opgenomen.
Een INNER JOIN
gaat alleen die personen tonen waarvoor een match in de tabel Boeken wordt gevonden.