
Met een Left Outer Join constructie worden in SQL twee tabellen aan elkaar geknoopt waarbij alle rijen uit de linker tabel worden getoond en alleen die rijen in de rechter tabel waarvan de gekoppelde velden identiek zijn. Schematisch ziet dat er als volgt uit.

Laten we dat aan de hand van een voorbeeld eens bekijken. In dit voorbeeld gaat het om data uit de twee tabellen ” steden” en “land”.
1 2 3 4 5 6 7 8 9 10 11 12 |
ID Name CountryCode District Population -- ------------------- ----------- ------------- ---------- 1 Amsterdam NLD Noord-Holland 731200 2 Rotterdam NLD Zuid-Holland 593321 3 Haag NLD Zuid-Holland 440900 4 Utrecht NLD Utrecht 234323 5 Eindhoven NLD Noord-Brabant 201843 6 Antwerpen BEL Antwerpen 446525 7 Gent BEL East Flanderi 224180 8 Charleroi BEL Hainaut 200827 9 Liège BEL Liège 185639 10 Bruxelles [Brussel] BEL Bryssel 133859 |
1 2 3 4 |
Code Name Continent ---- ----------- --------- DEU Germany Europe NLD Netherlands Europe |
Zoals je ziet bevat de tabel STEDEN, steden in de landen Belgie en Nederland (CountryCode NLD en BEL). De tabel LAND bevat echter enkel records met de landen Nederland en Duitsland (Code DEU en NLD).
Met de hieronder afgedrukte SQL halen we alle records op die aanwezig zijn in de STEDEN tabel. Alleen wanneer op basis van de gekoppelde landcode ook een record in de tabel LAND aanwezig, wordt het land afgedrukt (de left outer join).
1 2 3 4 5 6 7 |
select s.Name, l.Name from STEDEN s left outer JOIN land l on s.CountryCode = l.Code; |
Het resultaat van deze query ziet als volgt uit.
1 2 3 4 5 6 7 8 9 10 11 12 |
Name Name ------------------- ----------- Amsterdam Netherlands Rotterdam Netherlands Haag Netherlands Utrecht Netherlands Eindhoven Netherlands Antwerpen <null> Gent <null> Charleroi <null> Liège <null> Bruxelles [Brussel] <null> |
Laat een reactie achter