Menu
Coddy logo textTech

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_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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_id

Wir 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_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Aufgabe

Mittel

Verfü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.column

Beispiel 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_id

Die 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

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen