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 mit mehreren Tabellen gesprochen, aber bei Self-Joins wird dieselbe Tabelle mit sich selbst verknüpft. Ein klassisches Beispiel wäre eine Tabelle mit Mitarbeitern.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

Jeder Mitarbeiter hat einen Vorgesetzten, mit Ausnahme des ranghöchsten Vorgesetzten, und jeder Vorgesetzte ist ebenfalls 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 zwischen derselben Tabelle durch, außer dass wir sie beim ersten Mal e1 und beim zweiten Mal e2 nennen. Der Join 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:

  • friends: id, name, friend_id

Finde Paare von Freunden, die gegenseitig befreundet sind (eine gegenseitige Freundschaft besteht, wenn friend_id von Person A auf Person B verweist UND 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 die WHERE-Klausel das Kriterium friend1.id < friend2.id ein, damit keine doppelten Paare enthalten sind 

Probier es selbst

-- Verbinde die Tabelle mit sich selbst, sodass eine Zeile zwei verschiedene Personen anzeigen kann
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Behalte nur die Paare, die aufeinander zurückzeigen
WHERE ____ AND f1.id < f2.id;
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

Übe selbstständig: SQL-Playground