💡 1. Das Konzept relationaler JOINs
Anstatt alle Daten in eine riesige, unübersichtliche Tabelle zu stopfen, trennen wir sie in spezialisierte Entitäten und verknüpfen sie bei Bedarf:
🔵 INNER JOIN (Schnittmenge)
Gibt nur Zeilen zurück, die in beiden Tabellen eine Übereinstimmung haben. Unzugeordnete Zeilen werden ignoriert.
🟢 LEFT JOIN (Alle links)
Behält alle Zeilen der linken Tabelle bei. Fehlt ein passender Partner in der rechten Tabelle, steht dort NULL.
🏷️ 2. Tabellen-Aliase & Join-Syntax
Mit kurzen Aliasen (z.B. m für mitarbeiter, a für abteilungen) bleibt dein SQL lesbar:
-- INNER JOIN mit Tabellen-Aliasen:
SELECT
m.name AS mitarbeiter_name,
m.rolle,
a.name AS abteilung_name
FROM mitarbeiter m
INNER JOIN abteilungen a ON m.abteilung_id = a.id;
-- LEFT JOIN mit Beibehaltung externer Berater:
SELECT
m.name AS mitarbeiter_name,
m.gehalt,
COALESCE(a.name, 'Keine Abteilung') AS abteilung
FROM mitarbeiter m
LEFT JOIN abteilungen a ON m.abteilung_id = a.id;
INNER JOIN: Nur Teilnehmer, die ein gültiges Firmen-Namensschild tragen, dürfen in den VIP-Raum.
LEFT JOIN: JEDER Besucher darf hinein. Wer kein Firmenschild hat, bekommt auf der Gästeliste ein leeres Feld (NULL)!
📑 3. Cheat-Sheet: Join-Muster
| Join-Typ | Syntax | Typischer Anwendungsfall |
|---|---|---|
INNER JOIN |
FROM t1 JOIN t2 ON t1.id = t2.f_id |
Bestellungen mit Kundennamen abrufen |
LEFT JOIN |
FROM t1 LEFT JOIN t2 ON t1.id = t2.f_id |
Alle Kunden anzeigen (auch ohne Bestellungen) |
Anti-Join |
LEFT JOIN t2 ... WHERE t2.id IS NULL |
Kunden finden, die noch nie bestellt haben |
Multi-Join |
FROM t1 JOIN t2 ON ... JOIN t3 ON ... |
Mitarbeiter mit Abteilung und Standort verbinden |