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 :
Ceci me donne comme résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'
Et j'aimerais que ma requête récursive me donne quelque chose comme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 No_fils Pred 4 1 4 2 4 '2 ', '1 ' 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 No_fils Pred 4 '1 ', '2 '
Alors, aurai-je mal utilisé le principe de récursivité ou mon CTE est-il mal fait ?
Merci d'avance,
Évans
Partager