車の部品表(BOM)を作成する
この演習では、次の問いに答えます。自動車を構成する各コンポーネントは、階層のどのレベルに位置しますか?
たとえば、SUV(第1レベル)は、エンジン(第2レベル)とボディ(第2レベル)から成り、さらにボディはドア(第3レベル)とフード(第3レベル)で構成されます。
あなたのタスクは、テーブル partList の階層レベルを取得するクエリを作成することです。CTE construction_Plan を作成し、各コンポーネントが階層内のどの位置にあるかを追跡してください。レベル1から開始し、レベル2までのすべてのコンポーネントを追跡します。
この演習はコースの一部です
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;