SQL JOIN
- Vorige pagina SQL Aliassen
- Volgende pagina SQL INNER JOIN
SQL join wordt gebruikt om gegevens te queryen van twee of meer tabellen op basis van de relatie tussen de kolommen in deze tabellen.
Join en Sleutel
Soms moeten we om volledige resultaten te krijgen, gegevens van twee of meer tabellen ophalen. Dan moeten we een join uitvoeren.
Tabel in de database kunnen met elkaar worden verbonden via sleutels. Een primaire sleutel (Primary Key) is een kolom, waarbij elke waarde in deze kolom uniek is voor elke rij. In de tabel is elke waarde van de primaire sleutel uniek. Het doel hiervan is om gegevens tussen tabellen te kruisen en te bundelen zonder elke tabel met alle gegevens te herhalen.
Kijk nu naar de "Persons"-tabel:
Id_P | LastName | FirstName | Adres | Stad |
---|---|---|---|---|
1 | Adams | John | Oxford Straat | Londen |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Straat | Peking |
Let op, de kolom "Id_P" is de primaire sleutel in de Persons-tabel. Dit betekent dat geen twee rijen dezelfde Id_P kunnen hebben. Zelfs als de namen van twee personen volledig hetzelfde zijn, kan Id_P hen onderscheiden.
Kijk nu naar de "Orders"-tabel:
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 65 |
Let op, de kolom "Id_O" is de primaire sleutel in de Orders-tabel, en de kolom "Id_P" in de Orders-tabel wordt gebruikt om naar de Persons-tabel te verwijzen zonder hun exacte naam te gebruiken.
Let op, de "Id_P" kolom verbindt de twee tabellen bovenstaand.
Verwijzing naar twee tabellen
We kunnen gegevens van twee tabellen ophalen door de tabellen te verwijzen:
Wie heeft producten besteld en wat hebben ze besteld?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
Resultaten set:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
SQL JOIN - Gebruik van Join
Naast de bovenstaande methode kunnen we ook de JOIN-sleutel gebruiken om gegevens van twee tabellen te verkrijgen.
Als we alle bestellingen van iedereen willen opstellen, kunnen we de volgende SELECT-statement gebruiken:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
Resultaten set:
LastName | FirstName | OrderNo |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
Verschillende SQL JOIN
Naast de INNER JOIN (binnenste koppeling) die we in de bovenstaande voorbeelden hebben gebruikt, kunnen we ook andere soorten koppelingen gebruiken.
Hieronder worden de JOIN-typen die u kunt gebruiken en hun verschillen weergegeven.
- JOIN: Retourneert rijen als er ten minste een match in de tabel is
- LEFT JOIN: Retourneert alle rijen van de linker tabel, zelfs als er geen match in de rechter tabel is
- RIGHT JOIN: Retourneert alle rijen van de rechter tabel, zelfs als er geen match in de linker tabel is
- FULL JOIN: Retourneert rijen zodra er een match in een van de tabellen bestaat
- Vorige pagina SQL Aliassen
- Volgende pagina SQL INNER JOIN