给定一个自引用表
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
我需要一个 sproc 来获取Item.Id
并返回直接孩子以及他们的总和ItemValue.Amounts
,他们的孩子和他们的孩子一直沿着树下。
例如,如果1
传入,则树将是2, 3, 4, 5
直接子节点2, 3
,输出将是
ItemId Amount
------------------
2 40 (values from ItemIds 4 & 5)
3 60 (values from ItemId 3)
应该应用什么样的方法来实现这种行为?
我正在考虑使用 CTE,但想知道是否有更好/更快的方法。