ใครคือผู้จัดการของคุณ?
ในแบบฝึกหัดนี้ เราจะใช้ชุดข้อมูลขององค์กรด้านไอที ซึ่งเก็บอยู่ในตาราง employee ตารางนี้มีฟิลด์ ID (รหัสพนักงาน), Name (ชื่อพนักงาน) และ Supervisor (รหัสของผู้บังคับบัญชา)
องค์กรด้านไอทีนี้ประกอบด้วยหลายบทบาทและหลายระดับชั้น

องค์กรมี IT director หนึ่งคน (ID=1, Heinz Griesser, Supervisor=0) ซึ่งมีพนักงานใต้บังคับบัญชาหลายคน ภายใต้ IT director จะพบ IT architecture manager (ID=10, Andreas Sternig, Supervisor=1) ซึ่งมีพนักงานใต้บังคับบัญชา 3 คน โดย Andreas Sternig มี Supervisor=1 ซึ่งตรงกับ ID ของ IT director
เราต้องการตอบคำถามแรกนี้: ใครเป็นผู้บังคับบัญชาของพนักงานแต่ละคน?
เราจะแก้ปัญหานี้ด้วยการคิวรีชุดข้อมูลแบบ recursive
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Hierarchical and Recursive Queries in SQL Server
คำแนะนำการฝึกหัด
- สร้าง CTE ชื่อ
employee_hierarchy - เลือกข้อมูลของ IT director เป็น initial step ของ CTE โดยกรองจาก
SupervisorID ของเขา - ทำ join กับตาราง
employeeเพื่อดึงชื่อของผู้จัดการออกมา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Create the CTE employee_hierarchy
WITH ___ AS (
SELECT
ID,
NAME,
Supervisor
FROM employee
-- Start with the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor
FROM employee emp
JOIN employee_hierarchy
ON emp.Supervisor = employee_hierarchy.ID)
SELECT
cte.Name as EmployeeName,
emp.Name as ManagerName
FROM employee_hierarchy as cte
JOIN employee as emp
-- Perform the JOIN on Supervisor and ID
ON cte.___ = emp.___;