始める無料で始める

車の部品表(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;
コードを編集して実行