Den passenden JOIN-Typ auswählen
Ein Entscheidungsmodell zur Auswahl des richtigen JOINs anhand einer Beschreibung
Den passenden JOIN-Typ auswählen ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Den Join aus einer Aufgabenstellung ableiten
Die wichtigste Join-Fähigkeit in einem Vorstellungsgespräch ist nicht die Syntax, sondern das Übersetzen einer Anforderung in natürlicher Sprache in den richtigen Join-Typ. Die meisten Kandidaten wissen, wie die einzelnen Joins funktionieren, geraten aber unter Druck ins Stocken, wenn sie einen auswählen müssen.
Diese Lektion vermittelt Ihnen ein wiederverwendbares Entscheidungsmodell, mit dem Sie den richtigen Join in wenigen Sekunden benennen können.
Die zentrale Frage: Welche Zeilen müssen erhalten bleiben?
Jede Entscheidung für einen Join lässt sich auf eine Frage reduzieren: Die nicht passenden Zeilen welcher Seite müssen Sie behalten?
- Nur passende Zeilen auf beiden Seiten behalten:
INNER JOIN. - Alle linken Zeilen behalten, unabhängig davon, ob sie passen:
LEFT JOIN. - Alle Zeilen beider Seiten behalten:
FULL OUTER JOIN. - Jede Kombination behalten:
CROSS JOIN.
Entscheiden Sie zuerst, was erhalten bleiben muss; daraus ergibt sich der Join-Typ automatisch.
Signalwörter für INNER JOIN
Formulierungen wie „Kunden, die eine Bestellung aufgegeben haben“, „Produkte, für die Bewertungen vorhanden sind“ oder „Bestellungen zusammen mit ihrem Kunden“ bedeuten, dass auf beiden Seiten eine Übereinstimmung vorhanden sein muss. Das ist ein INNER JOIN.
Wenn das Entfernen nicht passender Zeilen akzeptabel oder gewünscht ist, ist der Inner Join die Standardwahl und die effizienteste Option.
SELECT c.name, o.order_id
FROM customers c
JOIN orders o ON o.customer_id = c.id;Signalwörter für LEFT JOIN
Formulierungen wie „alle Kunden, einschließlich derjenigen ohne Bestellungen“ oder „jedes Produkt und seine Anzahl an Bewertungen auflisten (null, falls keine vorhanden sind)“ bedeuten, dass Sie die linke Tabelle unabhängig von Übereinstimmungen vollständig erhalten müssen. Das ist ein LEFT JOIN.
Die entscheidenden Wörter sind „alle“, „einschließlich derjenigen ohne“ und „auch wenn keine vorhanden sind“.
SELECT c.name, COUNT(o.order_id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;Signalwörter für den Anti-Join
Formulierungen wie „Kunden, die noch nie bestellt haben“, „Produkte ohne Verkäufe“ oder „Mitarbeiter ohne Vorgesetzten“ verlangen nach Zeilen, für die keine Übereinstimmung existiert. Das ist ein Anti-Join: LEFT JOIN plus WHERE right_key IS NULL (oder NOT EXISTS).
Die Schlüsselwörter sind „nie“, „kein“ oder „ohne“.
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.order_id IS NULL;Signalwörter für FULL OUTER JOIN
Formulierungen wie „zwei Listen abgleichen und Einträge anzeigen, die auf einer der beiden Seiten fehlen“ oder „die Konten des letzten Monats mit denen dieses Monats vergleichen und sowohl neue als auch weggefallene Konten markieren“ erfordern, dass nicht passende Zeilen aus beiden Tabellen erhalten bleiben. Das ist ein FULL OUTER JOIN.
Abgleichs- und Diff-Aufgaben sind der typische Auslöser.
SELECT a.id, b.id
FROM last_month a
FULL OUTER JOIN this_month b ON a.id = b.id
WHERE a.id IS NULL OR b.id IS NULL;Signalwörter für CROSS JOIN
Formulierungen wie „jede Größe in jeder Farbe“, „eine Zeile pro Filiale und Tag, auch wenn es keine Verkäufe gab“ oder „alle möglichen Kombinationen“ weisen auf einen CROSS JOIN hin.
Das entscheidende Signal sind „jede ... in jeder“ oder „alle Kombinationen“, wenn zwischen den beiden Mengen keine passende Bedingung existiert.
SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c;Signalwörter für SELF JOIN
Formulierungen, die eine Zeile mit einer anderen Zeile in derselben Tabelle in Beziehung setzen, etwa „jeden Mitarbeiter und seinen Vorgesetzten“, „Benutzerpaare in derselben Stadt“ oder „doppelte E-Mail-Adressen finden“, weisen auf einen Self-Join hin.
Das entscheidende Merkmal ist, dass eine Entität auf eine andere Entität derselben Art verweist oder mit ihr verglichen wird.
SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;Eine Übersetzung anhand eines Beispiels
Aufgabe: „Zeigen Sie jedes Produkt und wie oft es im letzten Monat bestellt wurde, einschließlich der Produkte, die nie bestellt wurden.“
So entschlüsseln Sie die Aufgabe: „jedes Produkt“ zusammen mit „einschließlich derjenigen, die nie bestellt wurden“ bedeutet, dass alle Produktzeilen erhalten bleiben müssen. Verknüpfen Sie daher products per LEFT JOIN mit orders und wenden Sie anschließend COUNT auf die Bestellseite an (für nicht passende Produkte ergibt sich 0, weil COUNT NULL ignoriert).
SELECT p.name, COUNT(o.order_id) AS times_ordered
FROM products p
LEFT JOIN orders o
ON o.product_id = p.id
AND o.order_date >= DATE '2024-05-01'
GROUP BY p.id, p.name;Eine häufige Falle: Filter in ON oder WHERE
In der vorherigen Abfrage befindet sich der Datumsfilter in der ON-Klausel, nicht in WHERE. Dadurch bleiben Produkte mit null passenden Bestellungen erhalten.
Wenn Sie order_date >= ... in WHERE verschieben, würden die NULL-Zeilen nicht passender Produkte verworfen. Dadurch würde der LEFT JOIN unbemerkt in einen INNER JOIN umgewandelt und genau die Produkte entfernt, die laut Aufgabenstellung erhalten bleiben sollten.
-- WRONG: WHERE on the outer table removes unmatched products
-- ...
-- LEFT JOIN orders o ON o.product_id = p.id
-- WHERE o.order_date >= '2024-05-01' <-- becomes an inner joinDas Entscheidungsmodell
Bearbeiten Sie jede Join-Aufgabe anhand dieser Checkliste:
- Bezieht sich dieselbe Tabelle auf sich selbst? -> SELF JOIN (und ziehen Sie eine rekursive CTE in Betracht, wenn die Tiefe unbegrenzt ist).
- Jede Kombination, keine Bedingung? -> CROSS JOIN.
- Nur passende Zeilen? -> INNER JOIN.
- Alle Zeilen einer Seite behalten? -> LEFT JOIN.
- Nicht passende Zeilen beider Seiten behalten? -> FULL OUTER JOIN.
- Zeilen ohne Übereinstimmung? -> Anti-Join (LEFT JOIN + IS NULL).
Schnelltest
Wenden Sie das Entscheidungsmodell auf eine Aufgabenstellung in natürlicher Sprache an.
Zusammenfassung: Den richtigen Join-Typ auswählen
Die wichtigsten Punkte:
- Beginnen Sie jede Join-Entscheidung mit der Frage, welche nicht passenden Zeilen erhalten bleiben müssen.
- Ordnen Sie die Signalwörter zu: „alle/einschließlich“ -> LEFT, „nie/kein“ -> Anti-Join, „jede ... in jeder“ -> CROSS, „jeden X und seinen X“ -> SELF, Abgleich -> FULL OUTER.
- Belassen Sie Filter für Outer-Joins in der
ON-Klausel; ein Filter inWHEREkann einen LEFT JOIN unbemerkt in einen INNER JOIN umwandeln. - Verbalisieren Sie das Entscheidungsmodell in Vorstellungsgesprächen; dadurch zeigen Sie Ihre Herleitung und nicht nur auswendig gelerntes Wissen.
Häufig gestellte Fragen
Ist die Lektion „Den passenden JOIN-Typ auswählen“ kostenlos?
Ja — der vollständige Text von „Den passenden JOIN-Typ auswählen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Den passenden JOIN-Typ auswählen“?
Ein Entscheidungsmodell zur Auswahl des richtigen JOINs anhand einer Beschreibung Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Den passenden JOIN-Typ auswählen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- CROSS JOIN und kartesische Produkte
- SELF JOIN für Hierarchien
- Zeilen innerhalb einer Tabelle vergleichen
- Den passenden JOIN-Typ auswählen