Noeud et feuille

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013 - 9 févr. 2007 à 13:39
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 11 févr. 2007 à 15:27
Bonjour,

Je dispose d'une table contenant des relations entre des noeuds et en finalité une feuille.
Ma table est constituée de 2 champs, mais je sait identidier si la valeur contenue est un noeud ou une feuille.
La question est de savoir pour chaque noeuds de niveau 0, quel est le nombre de sous noeud et quel en est la feuille, en sachant également que chaque noeud dispose que d'une seule feuille.

En espérant avoir été claire !

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 févr. 2007 à 00:12
Salut,

Pour faire ce calcul il faut le faire de manière recursive
soit pas programmation soit par procedure stockée.

maprocedure(monnoeud)

while not monnoeudestfeuille(monnoeud)
'traitement
maprocedure(monnoeud.fils)
end while

Attention en sql server 2000 le nombre de niveau de recursite est de 32 je crois.

Un article pour plus d'infos
http://www.evolt.org/article/Four_ways_to_work_with_hierarchical_data/17/4047/index.html
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
10 févr. 2007 à 13:05
Bonjour,

merci pour ta réponse, c'est ce que j'avais trouvé également, en fait j'ai oublié de préciser un détail qui n'en est pas un !
La table est en Access et non SQL Serveur.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
10 févr. 2007 à 14:42
Salut,

Merci pour ton message, mais il n'y a pas de question, alors l'a tu oubliés.
As-tu oubliés de valider.

Ou pour faire le traitement en ACCESS, tu as le choix en ton programme appellant et peut être que les macros peuvent le faire.

Bon courage.
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
11 févr. 2007 à 11:13
Bonjour,

l'objectif était d'utiliser uniquement le SQL de Access sans language externe tel que vb, vba ou même une macro.
Ta réponse est donc valable pour SQL Serveur, mais pas pour Access.
Merci pour ton aide.

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
11 févr. 2007 à 15:27
Salut,

Tu peux faire un truc dans une certaine limite, que tu fixe à la profondeur de ton choix

avec une requete du type

select T1.noeud,T2.noeud as noeud2, t3.noeud as noued3
from matable as t1
inner join matable as t2
on T1.fils = t2.id
Inner join matable as t3
on T2.fils = t3.fils
.....

Apres il faut gèrer les nulls

Peux-tu être es-ce une piste pour ta solution.
Mais pour par exemple calculé la profondeur, ca risque d'être dur.

Je n'ai pas toutes les données du problème et il serait plus facile de traiter les données avec du VBA a coté, dont tu peux je crois récuperer les valeur dans les requêtes access (qui sont une sorte de proc stock déguisé) car en, ADO elles sont vues comme des procs stockées.
0
Rejoignez-nous