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

สำหรับสิ่งนี้ จะใช้ฟิลด์ 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;