Lắp ráp một chiếc BMW?
Trong bài tập này, bạn sẽ trả lời câu hỏi: Tổng số lượng yêu cầu Total của mỗi linh kiện để lắp chiếc xe đến cấp 3 trong hệ phân cấp là bao nhiêu?
Nhiệm vụ của bạn là tạo CTE construction_Plan để theo dõi cấp độ của các linh kiện và tính tổng số lượng linh kiện trong trường Total. Bảng được thiết lập với các trường PartID, SubPartID, Level, Component và Total. Bạn cần xét tất cả các linh kiện từ cấp 1 đến cấp 3.
Bài tập này là một phần của khóa học
Truy vấn phân cấp và đệ quy trong SQL Server
Hướng dẫn bài tập
- Định nghĩa
construction_Planvới các trường cần thiết. - Khởi tạo
TotalbằngQuantitytrong phần neo (anchor) củaCTE. - Tăng
TotalbằngQuantitycủa phần tử con trong phần đệ quy. - Dùng
SUM()để tính tổngTotaltrên thông tin đã được tổng hợp theo các ID trong hệ phân cấp.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- Define CTE with the fields: PartID, SubPartID, Level, Component, Total
WITH ___ (___, ___, ___, ___, ___) AS (
SELECT
PartID,SubPartID,
0,
Component,
-- Initialize Total
___
FROM partList
WHERE PartID = '1'
UNION ALL
SELECT
CHILD.PartID, CHILD.SubPartID,
PARENT.Level + 1,
CHILD.Component,
-- Increase Total by the quantity of the child element
PARENT.___ + CHILD.___
FROM construction_Plan PARENT, partList CHILD
WHERE CHILD.SubPartID = PARENT.PartID
AND PARENT.Level < 3)
SELECT
PartID, SubPartID,Component,
-- Calculate the sum of total on the aggregated information
___(___)
FROM construction_Plan
GROUP BY PartID, SubPartID, Component
ORDER BY PartID, SubPartID;