JOIN
Op deze pagina:
Een Join wordt gebruikt om twee rijen van verschillende tabellen te combineren via een gerelateerde kolom.
De verschillende typen JOIN:
- (INNER) JOIN
- Geeft records die overeenkomende waarden hebben in beide tabellen.
- LEFT (OUTER) JOIN
- Geeft alle records van de linkertabel en de bijbehorende records van de rechtertabel.
- RIGHT (OUTER) JOIN
- Geeft alle records van de rechtertabel en de bijbehorende records van de linkertabel.
- FULL (OUTER) JOIN
- Geeft alle records als er iets gevonden wordt in de linker- of rechtertabel.
INNER JOIN
INNER JOIN geeft records die overeenkomende waarden hebben in beide tabellen.
INNER JOIN algemene vorm:
SELECT kolomnaam(s)
FROM tabel1
INNER JOIN tabel2
ON tabel1.kolomnaam = tabel2.kolomnaam;
SQL INNER JOIN voorbeeld:
/*
alleen ordersID's en klantnamen van
klanten waarvan de KlantID in beide
tabellen voorkomen worden getoond
*/
SELECT Orders.OrderID, Klanten.Klantnaam
FROM Orders
INNER JOIN Klanten ON Orders.KlantID = Klanten.KlantID;
-- voorbeeld waarbij meerdere tabellen gekoppeld worden
SELECT Orders.OrderID, Klanten.Klantnaam, Transporteurs.TransporteurNaam
FROM ((Orders
INNER JOIN Klanten ON Orders.KlantID = Klanten.KlantID)
INNER JOIN Transporteurs ON Orders.TransporteurID = Transporteurs.TransporteurID);
LEFT JOIN
LEFT JOIN geeft alle records van de linkertabel (tabel1) en de bijbehorende records van de rechtertabel (tabel2). Het resultaat is NULL van de rechterkant indien er geen overeenkomst is.
LEFT JOIN heet in sommige systemen LEFT OUTER JOIN.
LEFT JOIN algemene vorm:
SELECT kolomnaam(s)
FROM tabel1
LEFT JOIN tabel2
ON tabel1.kolomnaam = tabel2.kolomnaam;
SQL LEFT JOIN voorbeeld:
SELECT Klanten.Klantnaam, Orders.OrderID
FROM Klanten
LEFT JOIN Orders ON Klanten.KlantID = Orders.KlantID
ORDER BY Klanten.Klantnaam;
LEFT JOIN geeft alle records van de linkertabel (Klanten) zelfs als er geen bijbehorende gegevens zijn in de rechtertabel (Orders).
RIGHT JOIN
RIGHT JOIN geeft alle records van de rechtertabel (tabel2) en de bijbehorende records van de linkertabel (tabel1). Het resultaat is NULL van de linkerkant indien er geen overeenkomst is.
RIGHT JOIN heet in sommige systemen RIGHT OUTER JOIN.
RIGHT JOIN algemene vorm:
SELECT kolomnaam(s)
FROM tabel1
RIGHT JOIN tabel2
ON tabel1.kolomnaam = tabel2.kolomnaam;
RIGHT JOIN voorbeeld:
SELECT Orders.OrderID, Medewerkers.Achternaam, Medewerkers.Voornaam
FROM Orders
RIGHT JOIN Medewerkers ON Orders.MedewerkerID = Medewerkers.MedewerkerID
ORDER BY Orders.OrderID;
RIGHT JOIN geeft alle records van de rechtertabel (Medewerkers) zelfs als er geen bijbehorende gegevens zijn in de rechtertabel (Orders).
FULL OUTER JOIN
FULL OUTER JOIN geeft alle records als er in de rechter- en/of linkertabel iets gevonden wordt. Dit kan een groot aantal resultaten opleveren.
FULL OUTER JOIN is hetzelfde als FULL JOIN.
FULL OUTER JOIN algemene vorm:
SELECT kolomnaam(s)
FROM tabel1
FULL OUTER JOIN tabel2
ON tabel1.kolomnaam = tabel2.kolomnaam
WHERE voorwaarde;
SQL FULL OUTER JOIN voorbeeld:
SELECT Klanten.Klantnaam, Orders.OrderID
FROM Klanten
FULL OUTER JOIN Orders ON Klanten.KlantID = Orders.KlantID
ORDER BY Klanten.Klantnaam;
Self JOIN
Een Self JOIN is een gewone join, maar hier wordt de tabel ge-joined met zichzelf via 2 verschillende aliassen.
Self JOIN algemene vorm:
SELECT kolomnaam(s)
FROM tabel1 T1, tabel1 T2
WHERE voorwaarde;
SQL Self JOIN voorbeeld:
SELECT A.Klantnaam AS Klantnaam1, B.Klantnaam AS Klantnaam2, A.Stad
FROM Klanten A, Klanten B
WHERE A.KlantID <> B.KlantID
AND A.Stad = B.Stad
ORDER BY A.Stad;