สร้างรายการชิ้นส่วนของรถยนต์
ในแบบฝึกหัดนี้ คุณจะตอบคำถามต่อไปนี้: แต่ละชิ้นส่วนของรถยนต์อยู่ในระดับใดของลำดับชั้น?
ตัวอย่างเช่น รถ SUV (ระดับที่ 1) ประกอบด้วยเครื่องยนต์ (ระดับที่ 2) และตัวถัง (ระดับที่ 2) และตัวถังประกอบด้วยประตู (ระดับที่ 3) และฝากระโปรง (ระดับที่ 3)
ให้สร้างคิวรีเพื่อดึงระดับลำดับชั้นจากตาราง partList โดยสร้าง CTE ชื่อ construction_Plan เพื่อติดตามตำแหน่งของแต่ละชิ้นส่วนในลำดับชั้น ครอบคลุมทุกชิ้นส่วนตั้งแต่ระดับ 1 จนถึงระดับ 2
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Hierarchical and Recursive Queries in SQL Server
คำแนะนำการฝึกหัด
- กำหนด
construction_Planพร้อมฟิลด์ดังนี้:PartID,SubPartID,Title,ComponentและLevel - กำหนดค่าเริ่มต้นของฟิลด์
Levelเป็น 1 - เพิ่มค่า
Levelขึ้น 1 ในทุกขั้นตอนของการเรียกซ้ำ - จำกัดจำนวนขั้นตอน (
Level) ให้น้อยกว่า2
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Define CTE with the fields: PartID, SubPartID, Title, Component, Level
___ construction_Plan (___, ___,___, ___, ___) AS (
SELECT
PartID,
SubPartID,
Title,
Component,
-- Initialize the field Level
___
FROM partList
WHERE PartID = '1'
UNION ALL
SELECT
CHILD.PartID,
CHILD.SubPartID,
CHILD.Title,
CHILD.Component,
-- Increment the field Level each recursion step
PARENT.___ + ___
FROM construction_Plan PARENT, partList CHILD
WHERE CHILD.SubPartID = PARENT.PartID
-- Limit the number of iterations to Level < 2
AND PARENT.___ < ___)
SELECT DISTINCT PartID, SubPartID, Title, Component, Level
FROM construction_Plan
ORDER BY PartID, SubPartID, Level;