Menelusuri Hierarki
Termasuk bagian Lebih dari Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 21 dari 27.
Alasan sebenarnya recursive CTE ada: menelusuri hubungan induk/anak yang disimpan dalam satu tabel. Misalkan employees memiliki kolom manager_id yang menunjuk kembali ke tabel yang sama:
WITH RECURSIVE chain AS (
SELECT id, name, manager_id
FROM employees WHERE id = 7 -- anchor: karyawan awal
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
JOIN chain c ON e.id = c.manager_id -- recursive: lanjut ke manajer
)
SELECT * FROM chainSetiap langkah menggabungkan kembali CTE dengan employees, naik satu tingkat pada pohon. Rekursi berhenti dengan sendirinya saat sebuah baris tidak memiliki manager (JOIN tidak menemukan kecocokan).
Tantangan
SedangTabel dan kolom yang tersedia:
categories:id,name,parent_id
Setiap kategori memiliki parent_id opsional yang menunjuk ke kategori lain. Kembalikan semua kategori yang merupakan keturunan kategori id = 1 (anak, cucu, …), tetapi bukan kategori 1 itu sendiri. Kembalikan id dan name, diurutkan berdasarkan id.
Coba sendiri
WITH RECURSIVE descendants AS (
-- anchor: anak langsung dari id 1
-- rekursif: anak-anak mereka, dan seterusnya
)
SELECT id, name FROM descendants ORDER BY id
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Lebih dari Dasar-Dasar
Latihan sendiri: Playground SQL