Bonjour,
J'utilise présentement un requête récursive qui me permet d'obtenir le chemin que peut prendre un élément de ma base de donnée.
Ceci fonctionne très bien lorsque j'ai peu d'éléments (environ 50) dans ma base de données, cependant, lorsque j'en ai plusieurs (environ 400), ma requête récursive ne semble pas être capable de se terminer...
Alors, je me demandais si c'était mieux d'avoir une requête récursive, ou s'il y avait un autre moyen qui serait plus approprié lorsque l'on a beaucoup de données.
De plus, j'aimerais savoir s'il est possible de voir se qu'effectue la requête à chaque tour.
Voici le code de ma requête récursive :
J'avoue que je n'aime pas trop ma requête car ce que je fais, je crée une liste des éléments qui forme le chemin. Par la suite, j'obtiens sa longueur et divise par la longueur du champ (5). Ce qui me donne en fait le nombre d'éléments par lequel l'élément courant (@NoElement) a passé.
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
16
17
18
19
20
21 WITH Peres (Pere, Chemin, Longueur) AS (SELECT distinctcast(no_elem_fils aschar(5)),cast(@NoElement as varchar(MAX)),cast(0 asbigint) FROM Preseances where no_elem_fils = @NoElement UNION ALL SELECT cast(no_elem_pere aschar(5)), departure.Chemin + no_elem_pere, Len(departure.Chemin + no_elem_pere) FROM Preseances AS arrival INNER JOIN Peres AS departure ON departure.Pere = arrival.no_elem_fils WHERE departure.Chemin NOT LIKE '%'+ arrival.no_elem_pere +'%'), MChemin (Longueur) AS (SELECT MAX(Longueur) FROM Peres)
Merci,
Évans
Partager