Menu
Coddy logo textTech

Recap - Self Join

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 47 / 72.

challenge icon

Görev

Zor

Kullanılabilir tablolar ve sütunlar:

  • <strong>friends</strong>: <strong>id</strong>, <strong>name</strong>, <strong>friend_id</strong>

friends tablosundaki her person için sahip oldukları tüm arkadaştan arkadaşa bağlantılarını bulun. Bir arkadaştan arkadaşa bağlantısı, A kişisi B kişisi ile arkadaş olduğunda ve B kişisi de C kişisi ile arkadaş olduğunda gerçekleşir. Bu bağlantıları üç sütun halinde listeleyin:

  • friend1: başlangıçtaki kişi
  • friend2: onun doğrudan arkadaşı
  • friend3: arkadaşının arkadaşı

Kurallar:

  • friend3 ile friend1'in aynı kişi olduğu durumları dahil etmeyin
  • Sonuçları friend1 adına göre azalan düzende sıralayın (ORDER)

Örnek: Alice, Bob ile arkadaşsa ve Bob da Carol ile arkadaşsa, Alice-Bob-Carol geçerli bir arkadaştan arkadaşa bağlantısı olur.

Kendin dene

-- Tabloyu kendisine iki kez birleştir ki bir satır üç kişilik bir zincir tutsun
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Başladıkları kişiye geri dönen zincirleri at
WHERE ____
ORDER BY ____ DESC;

Temeller bölümündeki tüm dersler