1. Was ist der zentrale Unterschied zwischen INNER JOIN und LEFT JOIN?
Antwort und Begründung anzeigen
LEFT JOIN bewahrt die Zeilen der linken Seite auch ohne Treffer auf der rechten Seite.
SQL-WISSEN · Mehrere Tabellen
Wie JOINs Zeilen aus mehreren Relationen anhand einer Bedingung verbinden und warum JOIN-Typ, Kardinalität und Filterposition das Ergebnis verändern.
JOINs kombinieren Zeilen aus mehreren Tabellen. Bei qualifizierten INNER- und OUTER-JOINs bestimmt eine Join-Bedingung, welche Zeilen als passend gelten; ein CROSS JOIN bildet dagegen das kartesische Produkt ohne solche Bedingung. Welche Zeilen im Ergebnis erhalten bleiben, hängt vom JOIN-Typ und von zusätzlichen Filtern ab.
INNER JOIN liefert nur passende Kombinationen. LEFT JOIN bewahrt zusätzlich Zeilen der linken Seite, auch wenn rechts keine passende Zeile vorhanden ist.
SELECT k.name, b.id, b.betrag
FROM kunde AS k
JOIN bestellung AS b
ON b.kunde_id = k.id;
SELECT k.name, b.id
FROM kunde AS k
LEFT JOIN bestellung AS b
ON b.kunde_id = k.id;
Ein JOIN erzeugt nicht automatisch eine Eins-zu-eins-Beziehung. Mehrere passende Zeilen auf einer Seite können mehrere Ergebniszeilen erzeugen.
Deshalb ist die fachliche Kardinalität ein zentraler Teil der Fehleranalyse.
Praxisfall
Sie möchten alle Kunden sehen und zusätzlich erkennen, welche davon noch keine Bestellung haben.
Selbsttest
LEFT JOIN bewahrt die Zeilen der linken Seite auch ohne Treffer auf der rechten Seite.
Die Ergebnisgröße folgt der tatsächlichen Kardinalität der passenden Zeilen. Mehrere Treffer können zu mehreren Kombinationen führen.
Transfer
Prüfen Sie bei einer realen Mehrtabellenabfrage nicht nur die SQL-Syntax, sondern zeichnen Sie vorab die erwartete Kardinalität der Beziehungen. Vergleichen Sie danach Erwartung und Ergebniszeilen.
Weiterlernen
Quellen, Prüfstand und Grenzen
Norm-/Standardreferenz
ISO/IEC 9075
Version: ISO/IEC 9075-1:2023
Bezug: SQL-Framework, Begriffe und Standardkontext.
Projekt-Primärdokumentation
SQLite
Version: SQLite 3.53.4
Bezug: JOIN-Grammatik und aktuelle JOIN-Unterstützung.
Projekt-Release-Dokumentation
SQLite
Version: SQLite 3.39.0
Bezug: Einführung von RIGHT und FULL OUTER JOIN.
Projekt-Primärdokumentation
PostgreSQL
Version: PostgreSQL 18
Bezug: INNER, LEFT, RIGHT und FULL OUTER JOIN sowie ON/USING.
Hersteller-Primärdokumentation
MySQL
Version: MySQL 8.4 LTS
Bezug: INNER, LEFT und RIGHT JOIN, ON, USING und Portabilitätshinweise.