RIGHT JOIN
Joins & Mengen
Bedeutung
Der RIGHT JOIN (auch RIGHT OUTER JOIN) ist das Spiegelbild des LEFT JOIN: Er gibt alle Zeilen der rechten Tabelle zurück und ergänzt passende Zeilen der linken. Findet sich links kein Treffer, werden dessen Spalten mit NULL gefüllt.
Syntax
SELECT spalten FROM tabelleA RIGHT JOIN tabelleB ON tabelleA.schluessel = tabelleB.schluessel;
Beispiel: alle Bestellungen, auch ohne gültigen Kunden
Angenommen, in Bestellungen steht eine Zeile mit einer KundenID, die in Kunden nicht (mehr) existiert. Mit einem RIGHT JOIN siehst du auch diese Bestellung:
SELECT k.Name, b.BestellID, b.Menge FROM Kunden k RIGHT JOIN Bestellungen b ON k.KundenID = b.KundenID;
| Name | BestellID | Menge |
|---|---|---|
| Müller GmbH | 1001 | 3 |
| Schmidt AG | 1002 | 5 |
| NULL | 1099 | 2 |
Die Bestellung 1099 gehört zu keinem bekannten Kunden – ihr Name bleibt NULL.
LEFT oder RIGHT?
Jeder RIGHT JOIN lässt sich in einen LEFT JOIN umschreiben, indem du die Reihenfolge der Tabellen tauschst. Die folgenden beiden Abfragen liefern dasselbe:
FROM Kunden k RIGHT JOIN Bestellungen b ON … FROM Bestellungen b LEFT JOIN Kunden k ON …
In der Praxis bevorzugen viele Entwickler den LEFT JOIN, weil sich Abfragen so leichter von links nach rechts lesen lassen.
Welche Zeilen liefert ein RIGHT JOIN garantiert vollständig zurück?
Hinweis
RIGHT JOIN wird seltener verwendet als der LEFT JOIN. SQLite kennt RIGHT JOIN erst seit neueren Versionen; im Zweifel formulierst du die Abfrage einfach als LEFT JOIN um.