Menu
CoddyTech

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 chain

Setiap 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).

challenge icon

Tantangan

Sedang

Tabel 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Lebih dari Dasar-Dasar

Latihan sendiri: Playground SQL