Bonjour,
J'essaie de mettre au point une requête pour éclater une nomenclature, et j'ai besoin d'une peu d'aide.
Merci d'avance.
La nomenclature se présente de la façon suivante(j'ai réduit drastiquement le nb de lignes et de colonnes!):
BOM Number Mat Number
2000022 2001770
2000022 2003496
2000022 2001527
2000022 2003495
2000246 2002005
2000506 2000246
2000837 2000246
2001527 2001528
2001533 2000246
2001770 2001771
2001780 2000246
2002292 2000506
2002395 2002292
2002565 2000837
2002566 2002565
2002875 2002566
2003495 2002875
2003496 2002395
L'ensemble 2000022 est le haut de la nomenclature.
Je cherche tous les chemins qui mènent à l'article 2002005. Il y en a 4:
2002005, 2000246, 2000506, 2002292, 2002395, 2003496, 2000022
2002005, 2000246, 2000837, 2002565, 2002566, 2002875, 2003495, 2000022
2002005, 2000246, 2001533, 2001528, 2001527, 2000022
2002005, 2000246, 2001780, 2001772, 2001771, 2001770, 2000022
Je cherche à utiliser la requête récursive suivante, vue dans l'article de SQLPro, http://sqlpro.developpez.com/cours/s...te-recursives/
Cette requête ne sort que 2 branches parmi les 4:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 WITH maBOM (PIECE, STEPS, CHEMIN) AS (SELECT DISTINCT BOM3.[BOM Number], 0, CAST('2000022' AS VARCHAR(MAX)) FROM BOM3 where [BOM Number]=2000022 UNION ALL SELECT [Mat Number], b1.STEPS+1, cast(b1.CHEMIN as varchar(max))+', '+cast(b2.[Mat Number] as varchar(max)) FROM BOM3 AS b2 INNER JOIN maBOM AS b1 ON b1.PIECE = b2.[BOM Number]) SELECT * FROM maBOM where piece=2002005
2000022, 2003495, 2002875, 2002566, 2002565, 2000837, 2000246, 2002005
2000022, 2003496, 2002395, 2002292, 2000506, 2000246, 2002005
Comment faut il que je la modifie pour qu'elle sorte les 4 branches?
Merci d'avance
Partager