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

ฉันมีหัวหน้างานคนใด?

ในแบบฝึกหัดนี้ เราต้องการหาเส้นทางจากหัวหน้าสูงสุดในลำดับชั้นลงมาจนถึงพนักงานในระดับล่าง โดยต้องนำข้อมูลที่ได้จากแต่ละขั้นตอนมารวมไว้ในฟิลด์เดียวกัน ทำได้โดยการนำ ID มาเชื่อมกันด้วย CAST() เพื่อแปลงตัวเลขเป็น string ตัวอย่างเช่น CAST(ID AS VARCHAR(MAX)) ใช้แปลง ID จากชนิดตัวเลขเป็น char

งานในครั้งนี้คือการหาเส้นทางของพนักงาน Chris Feierabend ที่มี ID=18 และ Jasmin Mentil ที่มี ID=16 ขึ้นไปจนถึงจุดสูงสุดขององค์กร ผลลัพธ์ที่ได้ควรมีรูปแบบดังนี้: boss_first_level -> boss_second_level ... โดยให้เลือก ID ของพนักงาน ไม่ใช่ชื่อ

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

Hierarchical and Recursive Queries in SQL Server

ดูคอร์ส

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

  • กำหนดค่าเริ่มต้นของ Path ให้เป็น ID ของ supervisor (0) และกำหนดเงื่อนไขเริ่มต้นของ recursion
  • ใช้ UNION เชื่อม anchor member และกำหนดฟิลด์ของ recursive member (ID, Name, Supervisor)
  • เพิ่ม ID ของ supervisor (Supervisor) ต่อท้าย Path ในแต่ละขั้นตอน
  • เลือก ID ของพนักงาน Chris Feierabend และ Jasmin Mentil ใน CTE

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

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

WITH employee_Hierarchy AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor,
  		-- Initialize the Path with CAST
  		___('___' AS VARCHAR(MAX)) as Path
	FROM employee
	WHERE Supervisor = 0
	-- UNION the anchor query 
  	___ ALL
    -- Select the recursive query fields
	SELECT 
  		emp.___,
  		emp.___,
  		emp.___,
  		-- Add the supervisor in each step. CAST the supervisor.
        Path + '->' + ___(emp.___ AS VARCHAR(MAX))
	FROM employee emp
		INNER JOIN employee_Hierarchy
  		ON emp.Supervisor = employee_Hierarchy.ID
)

SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;
แก้ไขและรันโค้ด