🔗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_id | a.name | b.titel | b.autor_id |
|---|---|---|---|
| 1 | Greta Lindqvist | Nebel über Lund | 1 |
| 1 | Greta Lindqvist | Die stille Brücke | 1 |
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 …