Wie INNER JOIN Zeilen zusammenführt
Das mentale Modell der Zeilenpaare, mit dem jede JOIN-Frage einfach wird
Wie INNER JOIN Zeilen zusammenführt ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 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 SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Der erste JOIN, nach dem Interviewer fragen
Wenn ein Interviewer sagt: "Verbinden Sie diese beiden Tabellen", ist damit fast immer INNER JOIN gemeint. Er ist der Standard-JOIN und zeigt, ob Sie wirklich verstehen, wie Zeilen einander zugeordnet werden.
Das gesamte Thema lässt sich in einem Satz zusammenfassen: Ein INNER JOIN betrachtet jedes mögliche Zeilenpaar aus den beiden Tabellen und behält nur die Paare, die die ON-Bedingung erfüllen. Ohne Übereinstimmung verschwindet die Zeile einfach aus dem Ergebnis.
Verinnerlichen Sie dieses Modell, dann werden auch schwierigere Fragen zu JOINs leichter.
Zwei Tabellen zum Nachvollziehen
In dieser Lektion verwenden wir zwei kleine Tabellen. customers enthält die Personen, die Bestellungen aufgegeben haben, und orders erfasst jede Bestellung zusammen mit dem zugehörigen Kunden.
customers(id, name)orders(id, customer_id, amount)
Die Verbindung zwischen ihnen lautet orders.customer_id = customers.id. Diese Gleichheit ist das JOIN-Prädikat, von dem das gesamte Ergebnis abhängt.
customers
id | name
1 | Ada
2 | Bob
3 | Cleo -- no orders yet
orders
id | customer_id | amount
10 | 1 | 50
11 | 1 | 20
12 | 2 | 99Die grundlegende INNER-JOIN-Abfrage
Hier ist die kanonische Abfrage, die ein Interviewer sehen möchte. Beachten Sie die drei Bestandteile: die beiden Tabellen, den JOIN ... ON, der die Zeilen einander zuordnet, und die Spalten, die Sie auswählen.
Das Schlüsselwort INNER ist in jeder großen Datenbank optional. Ein einfaches JOIN bedeutet INNER JOIN, aber die ausgeschriebene Form macht die Absicht deutlich und vermeidet Mehrdeutigkeiten bei einer Codeüberprüfung.
SELECT c.name, o.amount
FROM customers AS c
INNER JOIN orders AS o
ON o.customer_id = c.id;So sieht das Ergebnis aus
Wenn Sie die Abfrage mit unseren Beispieldaten ausführen, erhalten Sie drei Zeilen. Ada hat zwei Bestellungen und erscheint daher zweimal. Bob erscheint einmal.
Cleo ist verschwunden. Sie hat keine passende Bestellung, daher entfernt der INNER JOIN sie vollständig. In einem Vorstellungsgespräch zu JOINs sollten Sie ausdrücklich erwähnen, dass nicht passende Zeilen verschwinden.
name | amount
Ada | 50
Ada | 20
Bob | 99Das mentale Modell der Zeilenpaare
Stellen Sie sich vor, dass die Datenbank zuerst das kartesische Produkt bildet: jeder Kunde wird mit jeder Bestellung kombiniert. Bei 3 Kunden und 3 Bestellungen ergeben sich 9 mögliche Paare.
Anschließend wendet sie das ON-Prädikat an und behält nur die Paare, für die es wahr ist. Von den 9 möglichen Paaren erfüllen nur 3 o.customer_id = c.id.
Für die Performance müssen Sie nicht so denken, aber es ist das exakte Modell, mit dem Sie jede Frage nach der Anzahl der zurückgegebenen Zeilen beantworten können.
Die möglichen Paare durchgehen
Gehen wir sie nach und nach durch. Der Kommentar hinter jedem Paar zeigt, ob das Prädikat wahr ist.
Nur die drei Zeilen mit TRUE bleiben im Ergebnis erhalten. Jedes Paar mit Cleo (id 3) schlägt fehl, daher trägt sie nichts zum Ergebnis bei.
-- customer.id vs order.customer_id
(Ada=1, ord10 cust=1) -> TRUE keep
(Ada=1, ord11 cust=1) -> TRUE keep
(Ada=1, ord12 cust=2) -> FALSE
(Bob=2, ord10 cust=1) -> FALSE
(Bob=2, ord12 cust=2) -> TRUE keep
(Cleo=3, anything) -> FALSE (no order matches 3)INNER JOIN ist reihenfolgeunabhängig
Eine häufige Prüfungsfrage lautet: Spielt es eine Rolle, welche Tabelle Sie zuerst angeben? Bei einem INNER JOIN lautet die Antwort nein. Diese beiden Abfragen geben identische Zeilen zurück, weil die ON-Bedingung symmetrisch ist.
Der Optimierer kann unabhängig von Ihrer Schreibweise jede der beiden Tabellen zuerst lesen. (Das gilt NICHT für LEFT- und RIGHT-JOINs, die später behandelt werden.)
-- These return the same rows
SELECT c.name, o.amount
FROM customers c JOIN orders o ON o.customer_id = c.id;
SELECT c.name, o.amount
FROM orders o JOIN customers c ON c.id = o.customer_id;Tabellen-Aliase werden erwartet
Interviewer erwarten kurze, klare Aliase. Vergleichen Sie die ausführliche vollständig qualifizierte Variante mit der übersichtlichen Variante mit Aliasen.
Aliase werden außerdem zwingend erforderlich, wenn ein Spaltenname in beiden Tabellen vorkommt. Eine Auswahl des nicht qualifizierten id würde hier einen Fehler wegen einer mehrdeutigen Spalte auslösen. Sie müssen daher c.id oder o.id schreiben.
-- verbose
SELECT customers.name, orders.amount
FROM customers JOIN orders
ON orders.customer_id = customers.id;
-- aliased, preferred
SELECT c.name, o.amount
FROM customers c JOIN orders o
ON o.customer_id = c.id;Über mehrere Spalten verknüpfen
Das ON-Prädikat ist nicht auf einen einzigen Gleichheitsvergleich beschränkt. Wenn eine Beziehung durch einen zusammengesetzten Schlüssel definiert ist, verknüpfen Sie die Bedingungen mit AND.
Hier gilt ein Preis pro Produkt und Region, daher müssen beide Spalten übereinstimmen. An diesem Beispiel prüfen Interviewer, ob Sie nicht nur Verknüpfungen über eine einzelne Spalte auswendig gelernt haben.
SELECT s.units, p.unit_price
FROM sales s
INNER JOIN price_list p
ON p.product_id = s.product_id
AND p.region = s.region;Es gibt auch Non-Equi-Joins
Die ON-Bedingung kann ein beliebiger boolescher Ausdruck sein, nicht nur =. Ein Non-Equi-Join verwendet Bereiche oder Ungleichungen. Ein klassisches Beispiel ordnet eine Punktzahl einer Notenstufe zu.
Jede Punktzahl passt zu genau der einen Stufe, deren Bereich sie enthält. Wenn Sie erwähnen, dass JOINs nicht auf Gleichheit beschränkt sind, wirkt das schnell souverän.
SELECT s.student, g.grade
FROM scores s
INNER JOIN grades g
ON s.points >= g.min_points
AND s.points <= g.max_points;Expliziter JOIN vs. Komma-JOIN
In älterem Code und in manchen Interviewfragen werden Sie weiterhin auf die alte Komma-JOIN-Syntax stoßen. Bei einem INNER JOIN sind diese beiden Abfragen gleichwertig.
Bevorzugen Sie die explizite Form JOIN ... ON. Die Komma-Syntax lässt sich leicht versehentlich in ein kartesisches Produkt verwandeln, wenn Sie die WHERE-Klausel vergessen. Genau diesen Fehler hoffen Interviewer zu entdecken.
-- old implicit join
SELECT c.name, o.amount
FROM customers c, orders o
WHERE o.customer_id = c.id;
-- modern explicit join (preferred)
SELECT c.name, o.amount
FROM customers c
JOIN orders o ON o.customer_id = c.id;Schnelltest
Testen Sie das Grundprinzip der Zuordnung bei einem INNER JOIN.
Zusammenfassung: Wie INNER JOINs Übereinstimmungen finden
Diese Punkte sollten Sie im Interview wiederholen:
- INNER JOIN behält nur passende Paare; nicht zugeordnete Zeilen auf beiden Seiten werden entfernt.
- Mentales Modell: Bilden Sie alle möglichen Paare und behalten Sie anschließend diejenigen, für die das ON-Prädikat wahr ist.
- Die Reihenfolge ist unabhängig, und das Schlüsselwort
INNERist optional. - ON kann zusammengesetzte Schlüssel, Bereiche und Ungleichungen verwenden, nicht nur ein einzelnes
=. - Verwenden Sie explizites
JOIN ... ONmit klaren Aliasen, um Fehler durch mehrdeutige Spalten und versehentliche kartesische Produkte zu vermeiden.
Häufig gestellte Fragen
Ist die Lektion „Wie INNER JOIN Zeilen zusammenführt“ kostenlos?
Ja — der vollständige Text von „Wie INNER JOIN Zeilen zusammenführt“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Wie INNER JOIN Zeilen zusammenführt“?
Das mentale Modell der Zeilenpaare, mit dem jede JOIN-Frage einfach wird Du übst SQL 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 SQL Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. SQL 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 1 von 4.
Wie lange dauert die Lektion „Wie INNER JOIN Zeilen zusammenführt“?
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 SQL Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede SQL 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
- Wie INNER JOIN Zeilen zusammenführt
- ON oder WHERE bei JOINs
- JOIN-Fan-out und Zeilenvervielfachung
- Drei oder mehr Tabellen verknüpfen