[SQL Server]Problème avec une requête récursive
Bonjour,
Je viens de débuter dans le développement de requêtes récursives sous MS SQL Server 2005. J'ai un petit problème avec celle-ci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| WITH Predecesseurs (No_fils, Pred)
AS
(SELECT No_elem_fils, CAST(No_elem_pere AS VARCHAR(MAX))
FROM Preseances
UNION ALL
SELECT arrival.No_elem_fils, '''' + cast(departure.Pred AS VARCHAR(MAX)) + ''', ''' +
cast(arrival.No_elem_pere as varchar(max)) + ''''
FROM Preseances AS arrival
INNER JOIN Predecesseurs AS departure
ON departure.No_fils = arrival.No_elem_fils
WHERE departure.Pred NOT LIKE '%' + arrival.No_elem_pere + '%')
SELECT *
FROM Predecesseurs
WHERE no_fils = '4' |
Ceci me donne comme résultat :
Code:
1 2 3 4 5
| No_fils Pred
4 1
4 2
4 '2 ', '1 '
4 '1 ', '2 ' |
Et j'aimerais que ma requête récursive me donne quelque chose comme :
Code:
1 2
| No_fils Pred
4 '1 ', '2 ' |
Ma table est constituée d'éléments dont chacun (sauf ceux de départ) a des prédecesseurs qui doivent être complétés avant d'arriver à celui-ci. Ma requête récursive me permet de lister ces prédecesseurs.
Alors, aurai-je mal utilisé le principe de récursivité ou mon CTE est-il mal fait ?
Merci d'avance,
Évans