Joins (Überblick)
Joins & Mengen
Wozu Joins?
Daten liegen in einer relationalen Datenbank bewusst auf mehrere Tabellen verteilt. In unserer Beispiel-Datenbank stehen die Kundendaten in Kunden, die Produkte in Produkte und die einzelnen Bestellungen in Bestellungen. Ein Join verbindet diese Tabellen wieder, indem er Zeilen anhand einer gemeinsamen Spalte zusammenführt – bei uns über Kunden.KundenID = Bestellungen.KundenID und Produkte.ProduktID = Bestellungen.ProduktID.
Die ON-Bedingung
Der Kern jedes Joins ist die ON-Bedingung. Sie sagt der Datenbank, welche Zeilen zueinander gehören. Ohne sie (bzw. mit einer falschen Bedingung) entsteht schnell ein Kreuzprodukt: jede Zeile der einen Tabelle wird mit jeder Zeile der anderen kombiniert.
SELECT k.Name, b.BestellID, b.Menge FROM Kunden k JOIN Bestellungen b ON k.KundenID = b.KundenID;
Die Join-Typen im Überblick
- INNER JOIN: nur Zeilen, die in beiden Tabellen ein passendes Gegenstück haben.
- LEFT JOIN: alle Zeilen der linken Tabelle, passende der rechten – sonst
NULL. - RIGHT JOIN: alle Zeilen der rechten Tabelle, passende der linken – sonst
NULL. - FULL (OUTER) JOIN: alle Zeilen beider Tabellen, nicht Passendes wird mit
NULLaufgefüllt.
Ein Venn-Schaubild in Worten
Stell dir zwei überlappende Kreise vor: links Kunden, rechts Bestellungen.
| Join-Typ | Welcher Bereich der Kreise? |
|---|---|
| INNER JOIN | nur die Schnittmenge (Überlappung) |
| LEFT JOIN | linker Kreis komplett + Schnittmenge |
| RIGHT JOIN | rechter Kreis komplett + Schnittmenge |
| FULL JOIN | beide Kreise komplett |
Hinweis
Schreibst du nur JOIN, meint die Datenbank den INNER JOIN. Verwende immer Tabellen-Aliase wie k oder b – das macht lange Abfragen lesbar und vermeidet Mehrdeutigkeiten bei gleichnamigen Spalten. In den nächsten Lektionen gehen wir jeden Typ einzeln durch, beginnend mit dem INNER JOIN.