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)?

Zum Weiterlernen

Externe Inhalte – AP2 Lernhub ist nicht für die Verfügbarkeit oder Korrektheit der verlinkten Seiten verantwortlich.

Verwandte Themen