Je développe un programme de calcul des coûts Bill of Materials et j'ai du mal à imaginer une solution simple à certains sélections récursives que je veux. J'utilise SQL Server 2005 pour cette partie de l'application. Disons que j'ai le produit A, qui contient l'assemblage B, et la partie C. L'assemblage B contiendra les parties D et E, mais, là où je lutte, D et ou E peuvent contenir X nombre d'autres assemblages.la façon la plus simple de faire t-sql récursif pour plusieurs sélections
Je peux faire quelque chose comme:;
SELECT * FROM TBLBOM WHERE Parent = A
UNION
SELECT * FROM TBLBOM WHERE Parent = B
UNION
SELECT * FROM TBLBOM WHERE Parent = C
Pour produire quelque chose dans le sens de;
PARENT COMP COST
A X £1
B D £0.5
B E £0.5
....
C Y £1
Mais permet de dire le composant D est constitué de composants F & G, comment pourrais-je tenir compte dans une déclaration t-sql.
En un mot, je dois élargir la liste complète des composants de tous les ensembles qui sont associés à un produit parent indépendamment du fait qu'ils sont dans un sous-ensemble ou ensemble sous d'un sous-ensemble, etc ...
Idéalement, je voudrais éviter un curseur à tout prix :)
Toute aide/guidance serait appréciée.
Merci.
EDIT; Comme demandé, voici la structure de la table et la sortie attendue. Le parent est le DRAWINGNO et le nœud enfant est le PART (qui pourrait aussi être un parent en soi);
BOMID DRAWINGNO ITEM PART COST
1303 HGR05180 1 HGR05370 1
1304 HGR05180 2 HGF65050 4
1305 HGR05180 3 HGF50340 1
1312 HGR05370 1 HPN05075 1
1313 HGR05370 2 HPN05085 2
1314 HGR05370 3 HPN05080 1
1848 EXP-18G 1 HGR05180 1
1849 EXP-18G 2 HGR05210 3
1850 EXP-18G 3 HGR05230 1
1851 EXP-18G 4 HGR05140 1
1852 EXP-18G 5 HGR05150 2
1853 EXP-18G 6 HGR05050 1
1854 EXP-18G 7 ESC05350 1
1855 EXP-18G 8 ESC05330 3
1856 EXP-18G 9 HGR05360 1
1857 EXP-18G 10 HGR05370 2
1858 EXP-18G 11 ESC05640 1
peut YUO fournir la table strucure –