LEFT JOIN ·
RIGHT JOIN ·
NULL-Behandlung ·
Mehrere Tabellen ·
Anti Join ·
Praxis-Beispiele
LEFT und RIGHT JOIN geben alle Datensätze der einen Tabelle zurück – auch wenn es keinen Treffer in der anderen Tabelle gibt. Fehlende Werte werden mit NULL gefüllt.
LEFT JOIN gibt alle Zeilen der linken Tabelle (kunden) zurück – auch wenn es keine passende Zeile in der rechten Tabelle (bestellungen) gibt. In diesem Fall werden die Spalten der rechten Tabelle mit NULL gefüllt.
| Punkt | Beschreibung |
|---|---|
| Linke Tabelle | Alle Zeilen werden zurückgegeben (unabhängig von Treffern) |
| Rechte Tabelle | Nur passende Zeilen werden zurückgegeben – sonst NULL |
| NULL-Füllung | Fehlende Werte aus der rechten Tabelle werden mit NULL gefüllt |
| INNER vs LEFT | LEFT JOIN = INNER JOIN + alle nicht gematchten Zeilen der linken Tabelle |
RIGHT JOIN ist das Spiegelbild von LEFT JOIN: Er gibt alle Zeilen der rechten Tabelle zurück – auch ohne Treffer in der linken Tabelle. Fehlende Werte werden mit NULL gefüllt.
NULL-Behandlung ist bei Outer Joins entscheidend, da fehlende Treffer mit NULL gefüllt werden. Mit IS NULL können Sie diese Datensätze finden, mit COALESCE können Sie NULL-Werte durch einen Standardwert ersetzen.
COALESCE(wert, standard) ersetzt NULL-Werte durch den angegebenen Standardwert. Das ist besonders nützlich für Berichte und Auswertungen, wo NULL-Werte stören.
Mehrere LEFT JOINs ermöglichen es, Daten aus mehreren Tabellen zu kombinieren – wobei jede JOIN-Bedingung unabhängig ist und NULL-Werte für fehlende Treffer in der jeweiligen Tabelle liefert.
Anti Join findet alle Datensätze in einer Tabelle, die keine passenden Einträge in einer anderen Tabelle haben. Dies kann mit LEFT JOIN + IS NULL, NOT EXISTS oder NOT IN umgesetzt werden.
NOT EXISTS ist bei großen Datenmengen oft performanter als NOT IN und verhält sich bei NULL-Werten korrekt. Bei NOT IN müssen Sie auf NULL-Werte in der Subquery achten!
Praxis-Beispiele zeigen typische Anwendungen von LEFT und RIGHT JOIN – von Berichten über Kunden-Bestellungen bis zur Datenqualitätsprüfung.
LEFT
RIGHT
IS NULL
Mehrfach
Anti Join
Berichte
SELECT k.name, COUNT(b.id) FROM kunden k LEFT JOIN bestellungen b ON k.id = b.kunde_id GROUP BY k.id, k.name;