Menelusuri Hierarki
Termasuk bagian Lebih dari Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 21 dari 27.
Alasan sebenarnya recursive CTE ada adalah untuk menelusuri hubungan induk/anak yang tersimpan 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 -- jangkar: karyawan awal
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
JOIN chain c ON e.id = c.manager_id -- rekursif: lanjut ke manajer
)
SELECT * FROM chainSetiap langkah menggabungkan kembali CTE dengan employees, naik satu tingkat dalam hierarki. Rekursi berhenti secara alami saat sebuah baris tidak memiliki manajer (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, dan seterusnya), tetapi tidak termasuk 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