Problème requête récursive
Bonjour,
j'ai un soucis de requête récursive.
Voici ce que je cherche à faire :
Récupérer tous les accessoires, sous-accessoires ... des produits
Voici mes tables :
Produit (IdProduit, IdGroupeAccessoire)
GroupeAccessoire (IdGroupeAccessoire)
ProduitGroupeAccessoire(IdProduitGroupeAccessoire, IdProduit, IdGroupeAccessoire)
En gros un produit à un groupe d'accessoires qui sont également des produits, et ces produits peuvent également avoir des groupes d'accessoires et ainsi de suite ...
Voici mon message d'erreur :
Citation:
Msg*530, Niveau*16, État*1, Ligne*1
L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| WITH
tree (IdProduitPrincipal, IdGroupeAccessoire, IdProduitAcc)
as (
select p.IdProduit as IdProduitPrincipal, p.IdGroupeAccessoire, pga.IdProduit as IdProduitAcc
from Produit p
join GroupeAccessoire ga on ga.IdGroupeAccessoire = p.IdGroupeAccessoire
join ProduitGroupeAccessoire pga on pga.IdGroupeAccessoire = ga.IdGroupeAccessoire
--where p.IdProduit = 865
UNION ALL
select p.IdProduit, p.IdGroupeAccessoire, pga.IdProduit as IdProduitAcc
from produit p
join GroupeAccessoire ga on ga.IdGroupeAccessoire = p.IdGroupeAccessoire
join ProduitGroupeAccessoire pga on pga.IdGroupeAccessoire = ga.IdGroupeAccessoire
join tree t on t.IdProduitAcc = p.IdProduit
)
select * from tree
order by IdProduitPrincipal
--OPTION (MAXRECURSION 100)
; |
Par contre si j'enlève le commentaire (where p.IdProduit = 865) pour un IdProduit donné, cette requête fonctionne.
Que dois je faire, je ne comprends pas l'erreur !