Wil je weten wanneer je welke JOIN moet gebruiken in SQL? Je weet waarschijnlijk al dat je met behulp van een JOIN gegevens uit meerdere tabellen kan samenvoegen. Ook weet je waarschijnlijk al dat er verschillende soorten JOINS zijn:
- (INNER) JOIN
- LEFT (OUTER) JOIN
- RIGHT (OUTER) JOIN
- FULL (OUTER) JOIN
Wat de verschillen zijn tussen deze JOINs zullen we hieronder laten zien aan de hand van voorbeelden.
De datasets
We gaan werken met onderstaande datasets, ook wel tabellen genoemd:
De eerste dataset bevat de namen van de kinderen die zijn geboren in een bepaalde stad en de tweede dataset bevat de namen van de steden en in welke provincie deze liggen.
Hieronder gaan we uitleggen wat het resultaat is van de verschillende JOINs.
JOIN
De INNER JOIN wordt ook wel gewoon JOIN genoemd. Deze JOIN geeft als resultaat alleen rijen die in beide tabellen voorkomen.
De code om deze tabellen samen te voegen is:
- Select N.ID, N.Naam, M. Provincie
- FROM Geboorte N
- JOIN Locatie M
- ON N.Stad = M.Stad
Het resultaat van deze JOIN is:
Te zien is dat ID 11 en 13 ontbreken. Dit is omdat de betreffende stad van deze ID’s ontbreekt in de locatie tabel.
Als je toch alle rijen wilt zien uit de eerste tabel (Geboorte) gebruik je een LEFT JOIN
LEFT JOIN
De LEFT (OUTER) JOIN wordt ook wel LEFT JOIN genoemd. Deze JOIN geeft als resultaat alle rijen uit de eerste (LEFT) tabel en alleen de gekoppelde rijen uit de tweede (RIGHT) tabel.
De code om deze tabellen samen te voegen is:
- Select N.ID, N.Naam, M. Provincie
- FROM Geboorte N
- LEFT JOIN Locatie M
- ON N.Stad = M.Stad
Het resultaat van deze JOIN is:
Alle kinderen uit de eerste tabel worden nu wel getoond! Het is ook mogelijk om alle provincies uit de tweede tabel te tonen, ook al zijn er geen kinderen geboren in alle provincies. Hiervoor gebruik je RIGHT JOIN.
RIGHT JOIN
De RIGHT (OUTER) JOIN wordt ook wel RIGHT JOIN genoemd. Deze JOIN geeft als resultaat alle rijen uit de tweede (RIGHT) tabel en alleen de gekoppelde rijen uit de eerste (LEFT) tabel.
De code om deze tabellen samen te voegen lijkt heel veel op de vorige code. Alleen RIGHT vervangt LEFT:
- Select N.ID, N.Naam, M. Provincie
- FROM Geboorte N
- RIGHT JOIN Locatie M
- ON N.Stad = M.Stad
Het resultaat van deze JOIN is:
Te zien is dat alleen kinderen worden getoond die in een stad zijn geboren die in de Locatie tabel bestaat. Amsterdam ontbreekt, dus die kinderen worden niet getoond.
Wanneer je alle rijen uit beide tabellen wilt zien, gebruik je een FULL JOIN
FULL JOIN
De FULL (OUTER) JOIN wordt ook wel FULL JOIN genoemd. Deze JOIN geeft als resultaat alle rijen uit beide tabellen.
De code om deze tabellen samen te voegen is:
- Select N.ID, N.Naam, M. Provincie
- FROM Geboorte N
- FULL JOIN Locatie M
- ON N.Stad = M.Stad
Het resultaat van deze JOIN is:
Conclusie: welke JOIN gebruiken in SQL
Hieronder de verschillende soorten met het resultaat:
- JOIN geeft alleen de overeenkomende records uit beide tabellen weer.
- LEFT JOIN geeft alle records uit de eerste tabel weer en alleen de overeenkomende records uit de rechtertabel.
- RIGHT JOIN geeft alle records uit de tweede tabel weer en alleen de overeenkomende records uit de linkertabel.
- FULL JOIN geeft alle records uit beide tabellen weer.
In de praktijk zal je vaak een JOIN of LEFT JOIN gebruiken. De andere 2 komen minder voor. Wil je meer kennis opdoen over SQL? Schrijf je dan hieronder in en ontvang hoge korting op je eerste cursus.
Geschreven door
Thomas Duin
Eigenaar
Gespecialiseerd in diverse applicaties & software