MulaiMulai sekarang secara gratis

Dapatkan posisi dalam hierarki

Masalah penting saat bekerja dengan rekursi adalah melacak tingkat (level) rekursi. Dalam organisasi TI, ini berarti mencatat posisi setiap karyawan dalam hierarki.

A section of the entire hierarchy

Untuk itu, Anda akan menggunakan kolom LEVEL yang melacak langkah rekursi saat ini. Anda harus memperkenalkan kolom ini di anggota jangkar (anchor member), dan menambah nilainya pada setiap langkah rekursi di anggota rekursi.

Perlu diingat, tingkat hierarki pertama adalah 0, tingkat kedua adalah 1, dan seterusnya.

Latihan ini adalah bagian dari kursus

Kueri Hierarkis dan Rekursif di SQL Server

Lihat Kursus

Petunjuk latihan

  • Inisialisasi kolom LEVEL ke 1 pada awal rekursi.
  • Pilih informasi direktur TI sebagai langkah awal CTE dengan memfilter berdasarkan Supervisor.
  • Atur LEVEL ke langkah rekursi saat ini.
  • Lakukan JOIN dengan CTE yang didefinisikan pada ID supervisor dan karyawan.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

WITH employee_hierarchy AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor,
  		-- Initialize the field LEVEL
  		___ as LEVEL
	FROM employee
  	-- Start with the supervisor ID of the IT Director
	WHERE ___ = ___
	UNION ALL
	SELECT 
  		emp.ID,
  		emp.NAME,
  		emp.Supervisor,
  		-- Increment LEVEL by 1 each step
  		___ + 1
	FROM employee emp
		JOIN employee_hierarchy
  		-- JOIN on supervisor and ID
  		ON emp.___ = employee_hierarchy.___)
    
SELECT 
	cte.Name, cte.Level,
    emp.Name as ManagerID
FROM employee_hierarchy as cte
	JOIN employee as emp
	ON cte.Supervisor = emp.ID 
ORDER BY Level;
Edit dan Jalankan Kode