SQL 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