Bij de RIGHT JOIN
worden altijd alle rijen terug van de rechtertabel teruggegeven. Als er overeenkomsten zijn met de linkertabel, dan worden deze ook meegenomen in het resultaat.
In principe is de RIGHT JOIN
het tegenover gestelde van de LEFT JOIN
.
SELECT Tabelnaam1.kolomnaam1, Tabelnaam2.kolomnaam2
FROM Tabelnaam1
RIGHT JOIN Tabelnaam2
ON Tabelnaam1.kolomnaam1 = Tabelnaam2.kolomnaam1
Alle resultaten uit Tabelnaam2
zijn zichtbaar en indien aanwezig de data uit Tabelnaam2
ook.
Let op: In sommige databases moet RIGHT OUTER JOIN
worden gebruikt in plaats van RIGHT JOIN
.
RIGHT JOIN
in de praktijk
De volgende dataset is de inhoud van de tabel Order.
ordernummer, klantid, orderbedrag 1, 1, '23.20' 2, 4, '2.30' 3, 3, '12.93' 4, 4, '54.92' 5, 1, '6.12' 6, 4, '9.60' 7, 5, '15.56'
De volgende dataset is de inhoud van de tabel Klant.
id, voornaam, achternaam, woonplaats 1, 'Henk', 'Janssen', 'Amsterdam' 2, 'Petra', 'de klomp', 'Nijmegen' 3, 'Sjoerd', 'Vermeulen', 'Maastricht' 4, 'Mieke', 'Sterk', 'Amsterdam'
De relatie tussen beide tabellen is gelegd met het veld Order.klantid dat verwijst naar Klant.id
We willen met de volgende query alle orders opvragen uit de database. Als er aan een order een persoon is gekoppeld, dan willen we deze ook tonen.
SELECT *
FROM Persoon
RIGHT JOIN Order ON Persoon.id = Order.klantid
id, voornaam, achternaam, woonplaats, ordernummer, klantid, orderbedrag 1, 'Henk', 'Janssen', 'Amsterdam', 1, 1, '23.20' 4, 'Mieke', 'Sterk', 'Amsterdam', 2, 4, '2.30' 3, 'Sjoerd', 'Vermeulen', 'Maastricht', 3, 3, '12.93' 4, 'Mieke', 'Sterk', 'Amsterdam', 4, 4, '54.92' 1, 'Henk', 'Janssen', 'Amsterdam', 5, 1, '6.12' 4, 'Mieke', 'Sterk', 'Amsterdam', 6, 4, '9.60' NULL, NULL, NULL, NULL, 7, 5, '15.56'
We zien in de resultset een record met id 7 terug, hieraan is geen Persoon gekoppeld. De gegevens uit de tabel Persoon zijn voor dit record dan ook allemaal NULL
.