Menu
Coddy logo textTech

Revisão – Auto-JOIN

Parte da seção Fundamentos do Journey de SQL da Coddy. Lição 47 de 72.

challenge icon

Desafio

Difícil

Tabelas e colunas disponíveis:

  • friends: id, name, friend_id

Para cada pessoa na tabela friends, encontre todas as conexões de amigos de amigos que ela possui. Uma conexão de amigo de amigo ocorre quando a pessoa A é amiga da pessoa B, que, por sua vez, é amiga da pessoa C. Liste essas conexões em três colunas:

  • friend1: a pessoa inicial
  • friend2: seu amigo direto
  • friend3: o amigo de seu amigo

Regras:

  • Não inclua casos em que friend3 seja a mesma pessoa que friend1
  • Ordene os resultados pelo nome de friend1 em ordem decrescente

Exemplo: se Alice é amiga de Bob, e Bob é amigo de Carol, então Alice-Bob-Carol seria uma conexão válida de amigo de amigo.

Experimente você mesmo

-- Junte a tabela a si mesma duas vezes para que uma linha contenha uma cadeia de três pessoas
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Descarte as cadeias que voltam para a pessoa de onde começaram
WHERE ____
ORDER BY ____ DESC;

Todas as lições de Fundamentos

Pratique por conta própria: Playground de SQL