再帰 CTE を使用して TableA からレコードをフェッチする SQL クエリを作成する必要があります。(ツリー構造)。私は彼に「葉」を渡し、根に戻る方法を知りたいです。
これは @SOME_ID 変数で動作します
;WITH cte_recursive AS
(
SELECT ID, SUB_ID FROM tableA
WHERE SUB_ID = @SOME_ID
UNION ALL
SELECT parent.ID, parent.SUB_ID
FROM tableA parent
INNER JOIN cte_recursive child ON child.ID = parent.SUB_ID
)
ここで達成する必要があるのは、TableB からすべてのレコードを取得し、CTE 式に tableB.SOME_ID を使用し、CTE が生成する各レコードと TableB のいくつかのフィールドに対して TableC への挿入を作成することです。
(cte_recursive.CHILD_ID、tableB.SomeValue、tableB.SomeOtherValue)
ここでの私の質問は、tableB.SOME_ID を cte 式に渡すにはどうすればよいですか?
したがって、TableA には次のようなものがあります。
ID、SUB_ID
1、2
2 , 3
2 , 4
2 , 5
5 , 6
7、8
8、9
彼に SUB_ID = 5 を渡すと、CTE はレコード #1、#2、#3、#4、#5 を返します。SUB_ID = 5 は ID = 1 の子の子の子であるためです。