🔗JOINs als Zeilenpaarung

Venn-Diagramme täuschen: Ein JOIN vereinigt keine Mengen, er paart Zeilen. Jede linke Zeile wird mit jeder rechten verglichen – nur wo die ON-Bedingung TRUE ist, entsteht eine Ergebniszeile. Deshalb kann ein JOIN auch Zeilen vervielfachen.

Alle linken Zeilen bleiben. Findet eine linke Zeile keinen Partner, werden die rechten Spalten mit NULL aufgefüllt.

autoren a (Ausschnitt)
1Greta Lindqvist
2Tomás Herrera
6Lucia Moretti
buecher b (Ausschnitt)
Nebel über Lund1
Die stille Brücke1
Salz und Sterne2
Volkslieder aus alter ZeitNULL
ON ist TRUE → PaarFALSEUNKNOWN (NULL beteiligt)
Schritt 1 / 4 · Tasten ← →

Linke Zeile 1 (Greta Lindqvist) wird mit allen 4 rechten Zeilen verglichen: 2 Treffer, 1× UNKNOWN.

📝 SQL

SELECT a.name, b.titel
FROM autoren a
  LEFT JOIN buecher b ON b.autor_id = a.autor_id;

📤 Ergebnis (bisher)

a.autor_ida.nameb.titelb.autor_id
1Greta LindqvistNebel über Lund1
1Greta LindqvistDie stille Brücke1

Grau: mit NULL aufgefüllte Zeile (kein Partner gefunden).

⚠️Typische Stolperfallen

⚠️ NULL paart sich nie
Das Volksliederbuch hat autor_id = NULL. NULL = 1 ist UNKNOWN – es findet nie einen Partner, auch kein anderes NULL.
⚠️ WHERE macht LEFT zu INNER
LEFT JOIN buecher b … WHERE b.genre = 'Krimi' wirft die aufgefüllten NULL-Zeilen wieder raus. Bedingungen für die rechte Seite gehören ins ON.
💡 Vervielfachung
Greta hat zwei Bücher → sie erscheint nach dem JOIN zweimal. Wer danach SUM bildet, zählt Werte der linken Seite doppelt.

🧪Selbst ausprobieren

Echte SQL-Engine (SQLite im Browser) auf der vollständigen Beispieldatenbank.
SQL-Engine wird geladen …