Der SQL RIGHT JOIN verbindet zwei Tabellen miteinander. Alle Zeilen aus der rechten Tabelle (TabelleB) werden ausgegeben und dazu übereinstimmende Werte aus der linken Tabelle (TabelleA) werden angefügt.
SELECT Spalte
FROM TabelleB
RIGHT JOIN TabelleA
ON TabelleA.Spalte = TabelleB.Spalte;
Beim SQL RIGHT JOIN müssen die Zeilen aus der rechten Tabelle nicht mit der linken Tabelle übereinstimmen. Es wird die rechte Tabelle plus ein INNER JOIN aus beiden Tabellen wiedergegeben. Da die rechte Tabelle Zeilen enthält, die nicht mit der linken Tabelle übereinstimmen, kommt es in den gejointen Spalten der linken Tabelle zu NULL Werten. In einigen Datenbanken wird der RIGHT JOIN als RIGHT OUTER JOIN bezeichnet.
SQL RIGHT JOIN - Beispiel
Ein Online-Händler möchte einen Überblick über die Produktrezensionen seiner Kunden bekommen. Dafür möchte er seine Kunden-Tabelle mit der Bestellungen_April-Tabelle verknüpfen, um einen direkten Vergleich zu haben. In beiden Tabellen überschneidet sich die Kunden_ID.
Kunden (Tabelle A) | |||
Kunden_ID | Name | Geburtsdatum | Geschlecht |
1 | Max Mustermann | 01.01.1990 | M |
2 | Erika Musterfrau | 31.12.1989 | W |
3 | Frauke Herrmann | 31.06.2000 | D |
Bestellungen_April (Tabelle B) | |||
Bestell_ID | Bestelldatum | Rezensionstext | Kunden_ID |
1 | 20.04.2020 | Ein wunderbares … | 1 |
2 | 22.04.2020 | (null) | 1 |
3 | 25.04.2020 | Ich bin unzufrieden … | 3 |
SELECT Kunden.Name, Kunden.Geschlecht,
Bestellungen_April.Bestelldatum, Bestellungen_April.Rezensionstext
FROM Bestellungen_April
RIGHT JOIN Kunden
ON Kunden.Kunden_ID = Bestellungen_April.Kunden_ID;
Die Tabellennamen werden vor die Spalten geschrieben, damit eine konkrete Zuordnung stattfinden kann, falls Spalten aus verschiedenen Tabellen denselben Namen haben.
Name | Geschlecht | Bestelldatum | Rezensionstext |
Max Mustermann | M | 20.04.2020 | Ein wunderbares … |
Max Mustermann | M | 22.04.2020 | (null) |
Erika Musterfrau | W | (null) | (null) |
Frauke Herrmann | D | 25.04.2020 | Ich bin unzufrieden … |
Die Spalten Name, Geschlecht und Geburtsdatum wurden über den RIGHT JOIN Befehl angefügt. Auffällig ist, dass es zwei Zeilen mit Max Mustermann gibt. Das liegt daran, dass die Spalte Kunden_ID, über die der RIGHT JOIN durchgeführt wurde, in der Bestellungen-Tabelle zwei Mal existiert. Daher gibt es zwei Verweise aus den Bestellungen auf den Kunden Max Mustermann. Da nicht zwei Werte in ein Feld eingefügt werden können, wird seine Zeile dupliziert und mit den zweiten Werten aus der Bestellungen-Tabelle bereichert.
Zu Erika Musterfrau gibt es keine Informationen in der Bestellungen-Tabelle, da ihre Kunden_ID „2“ nicht vorhanden ist. Damit kann keine Zeile zu Erika Musterfrau zugeordnet werden, weshalb bei ihr in den neuen Spalten NULL Werte enthalten sind. Die Kundin hat also keine Bestellung im April getätigt.