1
私はDBの専門家がSQL Server 2012の下のシナリオでcteを書き込もうとしていましたが、問題を解決できませんでした。これを理解するのに役立つ人がいれば、感謝します。再帰的多対多CTE
私はテーブルJobcardとitemsのためにJockcard2Itemと呼ばれる多くのテーブルを持っています。私の場合は
私は怒鳴るように与えられたアイテムIDのすべてのJobcardsを知りたい、
ジョブ・カードは、複数の項目を有することができ、項目が多くJobcardsを持つことができます。
- 項目1、項目2、項目4
を持つアイテム3
jobcard4を持つアイテム3 jobards3を持つ項目2. jobcard2を持つjobcard1私が取得したいです指定されたアイテムに関連付けられているすべてのジョブカード。他のアイテムがある場合は、同じジョブカードを参照しているアイテム( アイテム2を参照しているjobcard2など)そのジョブカードも。 結果は、私は無限実行されている以下のクエリをしようとしていたjobcard1、jobcard3、jobcard3、
を返す必要があります。怒鳴る
id jobcard_ID, item_ID
1 512 12
2 512 13
3 513 13
4 513 14
5 514 14
6 515 15
7 516 16
として
DECLARE @itemId int
SELECT @itemId = 12
;WITH temp as(
SELECT jobCard_ID, item_id FROM Jobcard2Item
WHERE item_id = @EstimateID
UNION ALL
SELECT bi.jobCard_ID ,bi.item_id FROM Jobcard2Item
JOIN temp x ON bi.jobCard_ID= x.jobCard_ID where x.item_id not IN (bi.item_id)
)
select * from temp option (maxrecursion 0)
サンプル日付それが結果を返さなければならないのitem_idとして、私は12を渡す - 512513514、
サンプルデータを提供すると多くの助けになります。 –
サンプルデータを追加しました。どうぞご覧ください。 – inspiedar