与えられた自己参照テーブル
Item
-------------
Id (pk)
ParentId (fk)
関連する値の関連するテーブル
ItemValue
-------------
ItemId (fk)
Amount
そしていくつかのサンプルデータ
Item ItemValues
Id ParentId ItemId Amount
-------------------- ----------------------
1 null 1 10
2 1 3 40
3 1 3 20
4 2 4 10
5 2 5 30
6 null
7 6
8 7
Item.Id
私は、直接の子供たちを連れて帰り、ItemValue.Amounts
彼ら、彼らの子供たち、そして彼らの子供たちのために、ツリーのずっと下にあるすべての合計を持って返すためのsprocが必要です。
たとえば、1
渡された場合、ツリーは2, 3, 4, 5
直接の子に2, 3
なり、出力は次のようになります。
ItemId Amount
------------------
2 40 (values from ItemIds 4 & 5)
3 60 (values from ItemId 3)
この動作を実現するには、どのようなアプローチを適用する必要がありますか?
私はCTEの使用を検討していますが、より良い/より速いアプローチがあるかどうか疑問に思っています。