AP2Lernhub
Sehr hoch

JOINs & Unterabfragen

Mehrere Tabellen verknüpfen – Stolperstein in fast jeder SELECT-Aufgabe.

Warum Priorität „Sehr hoch"? Fast immer in der Prüfung (80–99%). Intensiv üben.

Lernziele

  • INNER, LEFT, RIGHT und FULL OUTER JOIN sicher unterscheiden
  • Beim JOIN die passenden ON-Bedingungen formulieren
  • Selbst-Joins und kartesische Produkte erkennen

1. JOIN-Typen – die Mengenlogik

JOINErgebnis
INNER JOINSchnittmenge: nur Zeilen, die auf BEIDEN Seiten einen Treffer haben
LEFT JOINAlle Zeilen der linken Tabelle + passende rechts; fehlende rechts als NULL
RIGHT JOINSpiegelbildlich
FULL OUTER JOINAlle Zeilen beider Tabellen, unpassend ⇒ NULL
CROSS JOINKartesisches Produkt – alle möglichen Kombinationen

2. Syntax-Vergleich

sql
-- Alte Komma-Syntax (funktioniert, aber unübersichtlich)
SELECT k.name, b.datum
FROM kunde k, bestellung b
WHERE k.id = b.kunde_id;

-- Modern mit JOIN … ON
SELECT k.name, b.datum
FROM kunde k
INNER JOIN bestellung b ON b.kunde_id = k.id;

3. LEFT JOIN – der häufige Punktbringer

Frage: »Zeige alle Kunden und die Anzahl ihrer Bestellungen, auch die ohne Bestellung.«

sql
SELECT k.name, COUNT(b.id) AS anzahl
FROM kunde k
LEFT JOIN bestellung b ON b.kunde_id = k.id
GROUP BY k.name;

4. Self-Join

Dieselbe Tabelle zweimal referenzieren – Aliasse sind Pflicht.

sql
-- Mitarbeiter + ihre Vorgesetzten
SELECT m.name AS mitarbeiter, v.name AS vorgesetzter
FROM mitarbeiter m
LEFT JOIN mitarbeiter v ON v.id = m.vorgesetzter_id;

Übungen

SQL-ÜbungLiefere zu jeder Bestellung (ID, Datum) den Kundennamen. Bestellungen ohne Kundeneintrag sollen trotzdem angezeigt werden.

Eine AntwortWelcher JOIN entspricht der Schnittmenge (nur Zeilen, die auf beiden Seiten passen)?

Verwandte Themen