LEFT JOIN
Joins & Mengen
Bedeutung
Der LEFT JOIN (auch LEFT OUTER JOIN) gibt alle Zeilen der linken Tabelle zurück – also der Tabelle, die zuerst genannt wird. Gibt es in der rechten Tabelle einen passenden Datensatz, wird er ergänzt; gibt es keinen, füllt die Datenbank die Spalten der rechten Tabelle mit NULL auf.
Syntax
SELECT spalten FROM tabelleA LEFT JOIN tabelleB ON tabelleA.schluessel = tabelleB.schluessel;
Beispiel: alle Kunden, auch ohne Bestellung
SELECT k.Name, b.BestellID FROM Kunden k LEFT JOIN Bestellungen b ON k.KundenID = b.KundenID;
| Name | BestellID |
|---|---|
| Müller GmbH | 1001 |
| Schmidt AG | 1002 |
| Dupont SARL | NULL |
Dupont SARL hat keine Bestellung, erscheint aber trotzdem – mit NULL in der Spalte BestellID.
Beispiel: Kunden ohne Bestellung finden
Ein häufiger Trick: Mit dem LEFT JOIN und einer WHERE … IS NULL-Bedingung findest du genau die Zeilen, die kein Gegenstück haben.
SELECT k.Name FROM Kunden k LEFT JOIN Bestellungen b ON k.KundenID = b.KundenID WHERE b.BestellID IS NULL;
| Name |
|---|
| Dupont SARL |
Stolperfalle
Setzt du eine Bedingung auf die rechte Tabelle in die WHERE-Klausel (statt in ON), filterst du die NULL-Zeilen wieder heraus und machst den LEFT JOIN faktisch zu einem INNER JOIN. Willst du solche Zeilen behalten, gehört die Bedingung in die ON-Klausel.