Menu
Coddy logo textTech

Riepilogo - Self join

Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 47 di 72.

challenge icon

Sfida

Difficile

Tabelle e colonne disponibili:

  • friends: id, name, friend_id

Per ogni persona nella tabella degli amici, trova tutte le connessioni tra amici di amici. Una connessione tra amici di amici si verifica quando la persona A è amica della persona B, che a sua volta è amica della persona C. Elenca queste connessioni in tre colonne:

  • friend1: la persona iniziale
  • friend2: il suo amico diretto
  • friend3: l'amico del suo amico

Regole:

  • Non includere i casi in cui friend3 è la stessa persona di friend1
  • Ordina i risultati in base al nome di friend1 in ordine decrescente

Esempio: se Alice è amica di Bob e Bob è amico di Carol, allora Alice-Bob-Carol sarebbe una connessione valida tra amici di amici.

Provalo tu

-- Unisci la tabella a se stessa due volte, in modo che una riga contenga una catena di tre persone
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Escludi le catene che tornano alla persona da cui sono partite
WHERE ____
ORDER BY ____ DESC;

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground SQL