SQL: Cheminement dynamique

SQL: Cheminement dynamique - Programmation

Marsh Posté le 19-06-2002 à 14:57:31    

Je souhaite monter une requete qui fasse correspondre deux champs entre eux (Id et Arbre). :pt1cable:  
 

  • Contenu de la table:

Id   Arbre   Titre
1      0     Menu1-a
2      0     Menu1-b
3      0     Menu1-c
4      2     Menu2-a
5      2     Menu2-b
6      2     Menu2-c
7      5     Menu3-a
 
Ainsi, je rentre Id=7 et celui ci m'affiche les enregistrements:
 

  • Résultat souhaité de la requête:

Id   Arbre   Titre
7      5     Menu3-a
5      2     Menu2-b
2      0     Menu1-b
 
Et voila, c'est tout mais c'est la galère...
--------------------------------------------------------
Quelques éléments de réponse ne seraient pas de refus...
Merci,  :hello:  
--------------------------------------------------------


Message édité par Deka le 19-06-2002 à 14:58:18

---------------
,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,
Reply

Marsh Posté le 19-06-2002 à 14:57:31   

Reply

Marsh Posté le 19-06-2002 à 14:58:33    

SELECT * FROM taTable WHERE id = 7
 
 
?????
 
 
edit : désolé je viens de comprendre ce que tu voulais  
 
sorry j'y réfléchis plus longuement


Message édité par Loom the Gloom le 19-06-2002 à 15:00:07

---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 19-06-2002 à 15:01:22    

SELECT * FROM taTable WHERE id = 7 OR id = taTable.arbre
 
 
un truc du genre ??
 
à tester cependant


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 19-06-2002 à 15:08:34    

Loom the Gloom a écrit a écrit :

SELECT * FROM taTable WHERE id = 7 OR id = taTable.arbre
 
 
un truc du genre ??
 
à tester cependant  




 ;)  
C'est un truc comme ça en plus complexe car la correspondance entre les champs Id et arbre n'est pas sur le même enregistrement... Arfff
 
Voir exemple dans la question.
 
 :pt1cable:


---------------
,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,
Reply

Marsh Posté le 19-06-2002 à 15:11:43    

je rectifie :
 
SELECT * FROM taTable WHERE id = 7 or id = (SELECT arbre FROM taTable)
 
 
toujours pas assez complexe ?  ;)


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 19-06-2002 à 15:19:47    

Avec SYBASE, t'as les procédures stockés qui, me semble t'il, permettent de faire des requêtes de manière récursive.
 
C'est avec quelles bases de données que tu dois faire fonctionner ton programme?

Reply

Marsh Posté le 19-06-2002 à 15:26:17    

omega2 a écrit a écrit :

Avec SYBASE, t'as les procédures stockés qui, me semble t'il, permettent de faire des requêtes de manière récursive.
 
C'est avec quelles bases de données que tu dois faire fonctionner ton programme?  




 
C'est avec une simple base Access.


---------------
,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,
Reply

Marsh Posté le 19-06-2002 à 16:33:03    

Deka a écrit a écrit :

 
 
C'est avec une simple base Access.  



Alors je vais pas pouvoir t'aider.
D'autre saurint peut être quoi faire.

Reply

Marsh Posté le 19-06-2002 à 16:37:22    

select taTable.*, taTable.* FROM taTable WHERE taTable.id = 7 or taTable.id = (SELECT taTable.arbre FROM taTable)
 
 
je sais que j'avais déja fait un truc du genre... mais encore une fois à voir...


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le 19-06-2002 à 18:41:53    

UP  :eek2:

Reply

Marsh Posté le 19-06-2002 à 18:41:53   

Reply

Marsh Posté le 19-06-2002 à 20:03:22    

UP PLEASE :cry:

Reply

Marsh Posté le 21-06-2002 à 11:58:17    

euh petite question!! est ce que tu fais cela sous SQL server ?? car si oui , tu peux faire une procédure stockée avec un curseur!!

Reply

Marsh Posté le 21-06-2002 à 13:33:27    

A priori, je dirais que c'est impossible à faire en SQL pur (ce n'est pas un langage procédural.
Maintenant avec un truc du style procédure stockée, c'est beaucoup plus envisageable.

Reply

Marsh Posté le 21-06-2002 à 13:50:56    

Ouaip, même avis que irulan
Par contre si tu es sur Access, tu peux faire un peu de code en VBA qui te permettra de faire tes requêtes de façon récursive et ainsi afficher le résultat que tu souhaites. C'est à mon humble  avis la solution.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed