OVH Cloud OVH Cloud

le traitement des structure d'arbre

2 réponses
Avatar
imad
j'ai une question =E0 vous poser =E0 propos des requetes SQL:
je veux =E9tablir une requete sous Sql Server qui me renvoie=20
le nombre de documents que contient un dossier sachant=20
qu'on connait son ID et qu'il est compos=E9s lui-meme de=20
plusieurs sous dossiers. au fait c'est une arborescence et=20
je sais pas comment parcourir un arbre sur sql server pour=20
avoir en final les feuilles de l'arbre.
MERCI de votre aide.
Pour obtenir les feuilles d'un arbre en partant d'un=20
dossier qui a le DataID=3D2419 par exemple su ORACLE on=20
proc=E8de comme suit:

select nomtable.Name "documents" from nomtable
connect by ParentID=3DPrior DataID
start with DataID=3D2419

mais je connais pas la syntaxe sur SQL SERVER et si elle=20
n'existe pas pourriez vous me donner un programme=20
=E9quivalent? MERCI

2 réponses

Avatar
Fred BROUARD
bonjour,

il n'existe pas de SQL "tout fait" pour parcourir un arbre sous SQL Server.
Cependant la norme SQL à prévu dans sa version SQL:1999 la possibilité
de le faire via les clauses WITH RECURSIVE / CYCLE etc...
voire une première ébauche de l'étude de SQL 1999 à l'url :
http://sqlpro.developpez.com/SQL_AZ_992.html
(document non définitif !, a ne pas divulguer MERCI)

Cependant, il y a moyen de dérécursiver un arbre s'il est modélisé par
intervalles.
pour cela voir les études que j'ai produit sur le sujet avec les
procédures stockées écrites pour SQL Server :
http://sqlpro.developpez.com/Tree/SQL_tree.html

Voir aussi l'étude complémentaire que j'ai donné dans le cadre de la
conférence Borland de décembre 2003 :
http://sqlpro.developpez.com/BorCon03/BC2003.html

J'espère que Microsoft ne m'en voudra pas de citer un concurrent qui
s'avère tout de même un partenaire sur le terrain de dot net !

A +



imad a écrit:
j'ai une question à vous poser à propos des requetes SQL:
je veux établir une requete sous Sql Server qui me renvoie
le nombre de documents que contient un dossier sachant
qu'on connait son ID et qu'il est composés lui-meme de
plusieurs sous dossiers. au fait c'est une arborescence et
je sais pas comment parcourir un arbre sur sql server pour
avoir en final les feuilles de l'arbre.
MERCI de votre aide.
Pour obtenir les feuilles d'un arbre en partant d'un
dossier qui a le DataID$19 par exemple su ORACLE on
procède comme suit:

select nomtable.Name "documents" from nomtable
connect by ParentID=Prior DataID
start with DataID$19

mais je connais pas la syntaxe sur SQL SERVER et si elle
n'existe pas pourriez vous me donner un programme
équivalent? MERCI




--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
Med Bouchenafa[MVP]
Le CONNECT BY n'existe pas dans SQL Server et il n'y a rien d'équivalent.
Il y a cependant un chapitre dans l'Aide en Ligne "Développement de hiérarchies" qui peut être
t'aidera à résoudre ton problème

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"imad" a écrit dans le message de news:
d75001c3efef$93805830$
j'ai une question à vous poser à propos des requetes SQL:
je veux établir une requete sous Sql Server qui me renvoie
le nombre de documents que contient un dossier sachant
qu'on connait son ID et qu'il est composés lui-meme de
plusieurs sous dossiers. au fait c'est une arborescence et
je sais pas comment parcourir un arbre sur sql server pour
avoir en final les feuilles de l'arbre.
MERCI de votre aide.
Pour obtenir les feuilles d'un arbre en partant d'un
dossier qui a le DataID$19 par exemple su ORACLE on
procède comme suit:

select nomtable.Name "documents" from nomtable
connect by ParentID=Prior DataID
start with DataID$19

mais je connais pas la syntaxe sur SQL SERVER et si elle
n'existe pas pourriez vous me donner un programme
équivalent? MERCI