donné une table de référence autoQuel est le meilleur moyen de regrouper, d'agréger et de sommer des données d'arbre?
Item
-------------
Id (pk)
ParentId (fk)
Avec une table connexe de valeurs associées
ItemValue
-------------
ItemId (fk)
Amount
Et quelques exemples de données
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
je besoin d'un sproc prendre Item.Id
et retourner le directe les enfants avec une somme de ItemValue.Amounts
pour eux, leurs enfants et leurs enfants tout le long ee.
Par exemple, si 1
est passé dans, l'arbre serait 2, 3, 4, 5
les enfants directs sont 2, 3
la sortie serait
ItemId Amount
------------------
2 40 (values from ItemIds 4 & 5)
3 60 (values from ItemId 3)
Quel genre d'approches à appliquer pour faire parvenir à ce comportement?
J'envisage d'utiliser un CTE, mais je me demande s'il y a une approche meilleure/plus rapide.
SQL Server 2005, je vais retag également – Bob