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

รวม Parent ทั้งหมดที่เป็นไปได้ไว้ในฟิลด์เดียว

โจทย์สุดท้ายของบทนี้คือการค้นหา Parent ทั้งหมดที่เป็นไปได้โดยเริ่มจาก ID หนึ่ง แล้วรวม ID ของทุกรุ่นที่พบเข้าไว้ในฟิลด์เดียว

ในการทำเช่นนี้ จะค้นหาสมาชิกทั้งหมดแบบ recursive และเพิ่มข้อมูลดังกล่าวลงในฟิลด์เดียว โดยต้องใช้ operator CAST() เพื่อรวม ID ให้เป็น string การค้นหาจะเริ่มต้นจาก ID = 290 และในตาราง family มีข้อมูลทั้งหมด 300 รายการ

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

Hierarchical and Recursive Queries in SQL Server

ดูคอร์ส

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

  • กำหนด ParentID ของ 290 เป็นจุดเริ่มต้น
  • หาก Parent.ID = '' ในการดำเนินการ CASE ให้ตั้งค่าฟิลด์ Parent เป็น ParentID ปัจจุบัน
  • หาก Parent.ID <> '' ในการดำเนินการ CASE ให้เพิ่ม Parent ID เข้าไปใน Parent ปัจจุบันในแต่ละรอบของการวนซ้ำ
  • เลือก Name และ Parent จาก CTE ที่กำหนดไว้

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

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

WITH tree AS (
	SELECT 
  		ID,
  		Name, 
  		ParentID, 
  		CAST('0' AS VARCHAR(MAX)) as Parent
	FROM family
  	-- Initialize the ParentID to 290 
  	WHERE ___ = ___    
    UNION ALL
    SELECT 
  		Next.ID, 
  		Next.Name, 
  		Parent.ID,
    	CAST(CASE WHEN Parent.ID = ''
        	      -- Set the Parent field to the current ParentID
                  THEN(CAST(Next.___ AS VARCHAR(MAX)))
        	 -- Add the ParentID to the current Parent in each iteration
             ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
    		 END AS VARCHAR(MAX))
        FROM family AS Next
        	INNER JOIN tree AS Parent 
  			ON Next.ParentID = Parent.ID)
        
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;
แก้ไขและรันโค้ด