Menu
CoddyTech

Ringkasan: Self join

Termasuk bagian Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 47 dari 72.

challenge icon

Tantangan

Sulit

Tabel dan kolom yang tersedia:

  • friends: id, name, friend_id

Untuk setiap orang dalam tabel friends, temukan semua koneksi teman dari teman yang mereka miliki. Koneksi teman dari teman terjadi ketika orang A berteman dengan orang B, yang kemudian berteman dengan orang C. Daftarkan koneksi ini dalam tiga kolom:

  • friend1: orang yang memulai
  • friend2: teman langsungnya
  • friend3: teman dari temannya

Aturan:

  • Jangan sertakan kasus ketika friend3 adalah orang yang sama dengan friend1
  • Urutkan hasil berdasarkan nama friend1 secara menurun

Contoh: Jika Alice berteman dengan Bob, dan Bob berteman dengan Carol, maka Alice-Bob-Carol merupakan koneksi teman dari teman yang valid.

Coba sendiri

-- Gabungkan tabel dengan dirinya sendiri dua kali agar satu baris berisi rantai tiga orang
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Buang rantai yang kembali ke orang pertama dalam rantai tersebut
WHERE ____
ORDER BY ____ DESC;

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground SQL