Menu
Coddy logo textTech

Rückblick – Self-Join

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 47 von 72.

challenge icon

Aufgabe

Schwer

Verfügbare Tabellen und Spalten:

  • friends: id, name, friend_id

Finde für jede Person in der Tabelle friends alle Verbindungen zu Freunden von Freunden. Eine Verbindung zu einem Freund eines Freundes liegt vor, wenn Person A mit Person B befreundet ist und Person B wiederum mit Person C befreundet ist. Liste diese Verbindungen als drei Spalten auf:

  • friend1: die Ausgangsperson
  • friend2: ihr direkter Freund
  • friend3: der Freund ihres Freundes

Regeln:

  • Schließe Fälle aus, in denen friend3 dieselbe Person wie friend1 ist
  • Sortiere die Ergebnisse absteigend nach dem Namen von friend1

Beispiel: Wenn Alice mit Bob befreundet ist und Bob mit Carol befreundet ist, wäre Alice-Bob-Carol eine gültige Verbindung zu einem Freund eines Freundes.

Probier es selbst

-- Verbinde die Tabelle zweimal mit sich selbst, sodass eine Zeile eine Kette aus drei Personen enthält
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Verwerfe die Ketten, die zu der Person zurücklaufen, von der sie ausgegangen sind
WHERE ____
ORDER BY ____ DESC;

Alle Lektionen in Grundlagen

Übe selbstständig: SQL-Playground