SQLTutorial.nl
Left join
De left join, of left outer join in sommige database, geeft altijd alle rijen terug van de linker tabel (tabelnaam1), als er overeenkomsten zijn met de rechter tabel (tabelnaam2) dan worden deze ook weergegeven. De syntax voor de left join query ziet er als volgt uit:SELECT kolomnaam1, kolomnaam2
FROM tabelnaam1
LEFT JOIN tabelnaam2 ON tabelnaam1.kolomnaam = tabelnaam2.kolomnaam
- In sommige database moet LEFT OUTER JOIN gebruikt wordt ipv. LEFT JOIN.FROM tabelnaam1
LEFT JOIN tabelnaam2 ON tabelnaam1.kolomnaam = tabelnaam2.kolomnaam
Voorbeeld
De "Persoon" tabel zie er als volgd uit:
Er is tussen deze tabellen een relatie tussen Persoon.Id > Order.PersoonNr.
| id | Voornaam | Achternaam | Woonplaats | Geslacht |
|---|---|---|---|---|
| 1 | Henk | Janssen | Amsterdam | M |
| 2 | Petra | de klomp | Nijmegen | V |
| 3 | Sjoerd | Vermeulen | Amsterdam | M |
| 4 | Mieke | Sterk | Amsterdam | V |
De tabel "Orders":
| OrderNr | PersoonNr | Bestel datum |
|---|---|---|
| 1 | 1 | 10-1-2009 |
| 2 | 4 | 11-2-2009 |
| 4 | 1 | 8-8-2009 |
| 6 | 4 | 10-9-2009 |
In onderstaande query zullen alle personen worden opgevraagd uit de database, indien een persoon ook in de ordertabel voorkomt dat moet hiervan ook de gegevens worden weergegeven.
SELECT *
FROM Persoon
LEFT JOIN Orders
ON Persoon.id = Orders.PersoonNr
FROM Persoon
LEFT JOIN Orders
ON Persoon.id = Orders.PersoonNr
| id | Voornaam | Achternaam | Woonplaats | Geslacht | OrderNr | PersoonNr | Bestel datum |
|---|---|---|---|---|---|---|---|
| 1 | Henk | Janssen | Amsterdam | M | 1 | 1 | 10-1-2009 |
| 1 | Henk | Janssen | Amsterdam | M | 4 | 1 | 8-8-2009 |
| 2 | Petra | de klomp | Nijmegen | V | - | - | - |
| 3 | Sjoerd | Vermeulen | Amsterdam | M | - | - | - |
| 4 | Mieke | Sterk | Amsterdam | V | 2 | 4 | 11-2-2009 |
| 4 | Mieke | Sterk | Amsterdam | V | 6 | 4 | 10-9-2009 |
In het resultaat hierboven is te zien dat alle gegevens uit de personen tabel worden weergegeven. Indien de persoon meerdere keren voorkomt in de order tabel dan wordt de persoon ook meerdere keren in het overzicht getoond. Als er geen overeenkomst in de orders tabel gevonden is, Petra de klomp (id 2) komt niet voor in de orders tabel, zullen wel alle persoonsgegevens getoond worden en de resultaten van de orderstabel zullen met NULL waardes gevuld worden.