-
Requete recursive MS-SQL
Bonsoir,
J'ai une table avec (entre autre) deux colonnes: ID, Name et Parent qui permet de creer une hierarchie.
Si mon objet est la source, la valeur dans la colonne Parent est NULL. Sinon, elle a une valeur.
ID / Name / Parent
0 Linux NULL
1 Suse 0
2 10.0 1
3 9.0 1
J'aimerais que si j'entre comme parametre 9.0, ma requete me retourne:
9.0 / Suse / Linux
Et que si j'entre Linux, ca me retourne
Linux
Merci
-
Recherchez du côté d'un article de SQLPro sur les CTE (Common Table Expressions).
-
Merci ...
J'ai regarde dans MSDN les CTE mais je n'ai pas reussi a construire ma requete ...
La plupart du temps ils utilisent un index 'level' qu'ils incrementent.
Mais je n'ai pas vraiment besoin d'un index ; l'indice de mon parent est retourne par la valeur de mon champ Parent.
Il faut que j'execute une premiere fois une requete, que je regarde la valeur de la clef parent.
Si elle est NULL, alors pas la peine de continuer.
Si elle n'est pas alors il faut que je relance une requete, mais qui sera differente de la premiere (la premiere utilise le nom comme clause, la deuxieme utilisera le Parent comme clause ...)
-
Y'aurait pas une erreur de conception là ?
Vous mélangez trois notions différentes dans une seule table :
- Système d'exploitation
- Distribution
- Version
-
Peut importe de la conception, ce n'etait qu un exemple!
On peut prendre l'exemple d un chemin si tu preferes:
ID / Nom / Parent
0 C: NULL
1 Windows 0
2 temp 1
3 wallpaper 1
4 web 3
Si je veux afficher le chemin du repertoire wallpaper: C: Windows Wallpaper, comment faire?
@+
-
Et si tu nous donnais ton cas concret plutôt ?
C'est top secret ou quoi ?
-
Non, rien de secret, mais cela ne devrait pas changer en quoique ce soit la procedure a ecrire...
Mon application s'appelle Mariner et c'est une PPM (Portofolio Project Manager).
Ma table s'appelle PES_Object et contient une liste d'investissements ayant un ID, un nom et un parent (plus d'autres donnees).
PES_Object:
obj_UID / obj_ParentUID / obj_Name
-1 NULL System Root Object
1 -1 Entreprise Portofolio
2 1 Demand
9 1 Project Portofolio
Donc, si je fais une recherche sur System Root Object, j'aimerais qu'on me retourne uniquement System Root Object (pas de parent).
Si je cherche Project Portofolio, a ce moment la, j'aimerais avoir Project Portofolio / Entreprise Portofolio / System Root Object
Est-ce plus clair avec ce scenario 'reel'???
-
OK alors regarde la modélisation par arbre proposée par SQLPro dans cet article.
-
Merci, je vais lire l'article.
Mais je serais curieux de savoir pourquoi mon exemple concret a pousse a me pointer vers l'article plutot que mon premier ou deuxieme exemple ...
-
Chaque cas est particulier. L'abstraction théorique conduit à un générique peu optimal pour le problème spécifique !
A +