Self join
Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 46 von 72.
Self-Joins sind eine andere Art von Joins. Bisher haben wir über Joins zwischen mehreren Tabellen gesprochen, aber Self-Joins werden mit derselben Tabelle verknüpft. Ein klassisches Beispiel wäre eine Tabelle von employees.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Jeder Mitarbeiter hat einen Vorgesetzten, außer dem obersten Vorgesetzten, und jeder Vorgesetzte ist auch ein Mitarbeiter.
Das Problem: Für jeden Mitarbeiter möchten wir den Namen des Managers wissen.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idWir führen einen Join auf derselben Tabelle aus, außer dass wir sie beim ersten Mal e1 nennen und beim zweiten Mal e2. Die Verknüpfung erfolgt zwischen den Feldern employee_id und manager_id.
Das Ergebnis:
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Aufgabe
MittelVerfügbare Tabellen und Spalten:
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
Finde Freundespaare, die gegenseitige Freunde sind (eine gegenseitige Freundschaft besteht, wenn die friend_id von Person A auf Person B verweist UND die friend_id von Person B auf Person A verweist). Zeige die Namen beider Freunde in einer einzigen Zeile an. Benenne die Spalten friend1 und friend2.
Hinweis: Füge in der WHERE-Klausel das Kriterium friend1.id < friend2.id hinzu, damit keine doppelten Paare enthalten sind
Spickzettel
Self-Joins ermöglichen es Ihnen, eine Tabelle mit sich selbst zu verknüpfen, indem Sie Tabellen-Aliase verwenden. Dies ist nützlich, wenn Sie Zeilen innerhalb derselben Tabelle vergleichen oder Beziehungen zwischen Datensätzen in derselben Tabelle herstellen müssen.
Grundlegende Self-Join-Syntax:
SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.columnBeispiel mit Mitarbeitern und Managern:
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idDie wichtigsten Punkte:
- Verwenden Sie verschiedene Aliase (z. B.
e1,e2) für dieselbe Tabelle - Die Join-Bedingung verbindet verwandte Felder zwischen den Aliasen
- Nützlich für hierarchische Daten wie Mitarbeiter-Manager-Beziehungen
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns