Tạo bill of material (BOM) cho một chiếc xe
Trong bài tập này, bạn sẽ trả lời câu hỏi: Các cấp độ của những bộ phận tạo nên một chiếc xe là gì?
Ví dụ, một chiếc SUV (cấp 1) được cấu thành từ động cơ (cấp 2) và thân xe (cấp 2); thân xe lại gồm cửa (cấp 3) và nắp capo (cấp 3).
Nhiệm vụ của bạn là viết truy vấn để lấy cấp độ phân cấp của bảng partList. Bạn cần tạo CTE construction_Plan và theo dõi vị trí của một bộ phận trong hệ phân cấp. Theo dõi tất cả các bộ phận bắt đầu từ cấp 1 đến cấp 2.
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:PartID,SubPartID,Title,ComponentvàLevel. - Khởi tạo trường
Levelbằng 1. - Tăng
Levelthêm 1 ở mỗi bước đệ quy. - Giới hạn số bước (
Level) nhỏ hơn2.
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, 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;