Menu
CoddyTech

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 chain

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

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, …), 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
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