Joins
Je kunt een join visualiseren.
Stel je maakt een join t tussen de volgende tabellen.
Tabel persoon
ID | voornaan | achternaam |
1001 | Aagje | de Groot |
1002 | Amber | Nieuwenhuzien |
Tabel ziektemeldingen
ID | persoon | datum_van | datum_tot |
1 | 1002 | 14-06-2018 | 16-6-2018 |
2 | 1002 | 1-8-2018 | 6-8-2018 |
3 | 1003 | 2-8-2018 | 3-8-2018 |
Nu maak je een query waarbij je de twee tabellen joint.
SELECT *
FROM persoon, ziektemelding
SELECT *
FROM persoon
INNER JOIN ziektemelding
Deze queries zijn hetzelfde, hoewel de tweede is volgens de ANSI standaard en is 'hoe het hoort', omdat die duidelijker is.
Door deze query met een join wordt het Cartesian product bepaald:
ID | voornaam | achternaam | ID | persson | dataum_van | datum_tot |
1001 | Aagje | de Groot | 1 | 1002 | 14-06-2018 | 16-6-2018 |
1001 | Aagje | de Groot | 2 | 1002 | 1-8-2018 | 6-8-2018 |
1001 | Aagje | de Groot | 3 | 1003 | 2-8-2018 | 3-8-2018 |
1002 | Amber | Nieuwenhuzien | 1 | 1002 | 14-06-2018 | 16-6-2018 |
1002 | Amber | Nieuwenhuzien | 2 | 1002 | 1-8-2018 | 6-8-2018 |
1002 | Amber | Nieuwenhuzien | 3 | 1003 | 2-8-2018 | 3-8-2018 |
Alle combinaties van alle rijen van de twee tabellen worden dus naast erlkaar gezet. Hierna begint de slelectie aan de hand van de WHERE clause van de query.
SELECT *
FROM persoon, ziektemelding
where persoon.id=ziektemelding.persoon
SELECT *
FROM persoon
INNER JOIN ziektemelding
on persoon.id=ziektemelding.persoon
Dit resulteert in het 'verwijderen' van de eerste drie regels van het Catersian product:
ID | voornaam | achternaam | ID | persson | dataum_van | datum_tot |
1001 | Aagje | de Groot | 1 | 1002 | 14-06-2018 | 16-6-2018 |
1001 | Aagje | de Groot | 2 | 1002 | 1-8-2018 | 6-8-2018 |
1001 | Aagje | de Groot | 3 | 1003 | 2-8-2018 | 3-8-2018 |
1002 | Amber | Nieuwenhuzien | 1 | 1002 | 14-06-2018 | 16-6-2018 |
1002 | Amber | Nieuwenhuzien | 2 | 1002 | 1-8-2018 | 6-8-2018 |
1002 | Amber | Nieuwenhuzien | 3 | 1003 | 2-8-2018 | 3-8-2018 |
De twee onderste regels blijven over zoals we zouden verqchten in een INNER JOIN.
Bij een LEFT OUTER JOIN gebeurt er wat anders