เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ระบุตำแหน่งในลำดับชั้น

ปัญหาสำคัญในการทำงานกับ recursion คือการติดตามระดับของการเรียกซ้ำ ในองค์กร IT นี้หมายถึงการติดตามตำแหน่งในลำดับชั้นของพนักงานแต่ละคน

A section of the entire hierarchy

สำหรับสิ่งนี้ จะใช้ฟิลด์ LEVEL เพื่อติดตามขั้นตอนของ recursion ในปัจจุบัน โดยต้องกำหนดฟิลด์นี้ใน anchor member และเพิ่มค่าขึ้นในแต่ละขั้นตอนของ recursion member

โปรดจำไว้ว่าลำดับชั้นแรกคือ 0 ลำดับชั้นที่สองคือ 1 และเรียงต่อไปตามลำดับ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Hierarchical and Recursive Queries in SQL Server

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดค่าเริ่มต้นของฟิลด์ LEVEL เป็น 1 ที่จุดเริ่มต้นของ recursion
  • เลือกข้อมูลของผู้อำนวยการฝ่าย IT เป็นขั้นตอนแรกของ CTE โดยกรองที่ Supervisor
  • ตั้งค่า LEVEL ให้ตรงกับขั้นตอนปัจจุบันของ recursion
  • ทำ JOIN กับ CTE ที่กำหนดไว้โดยใช้ ID ของ supervisor และพนักงาน

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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;
แก้ไขและรันโค้ด