Relation de parent/enfant en une query

Bonjour à toutes et tous,

Mise en situation :
J’ai la table suivante (je sais c’est pas la structure la plus chique mais j’ai pas le choix…) :

id parentId Name
1 0 Ben
2 0 Seb
3 0 Bob
4 1 Benux
5 1 Benji
6 2 Sebou
7 3 Pit
8 3 Zack

Ma question : "Comment puis-je me choper EN UNE REQUÊTE le résultat suivant :

Ben
Benux
Benji
Seb
Sebou
Bob
Pit
Zack
"
??

Si quelqu’un pouvait m’apporter ses lumières à ce niveau, je lui en serait éternellement reconnaissant !

D’avance merci !

Benux

Salut Benux,

Heu ça risque d’être fort compliqué lol. Tu bosse avec quel langage de programmation pour l’affichage ?

Le soucis dans ton cas c’est qu’on ne peux ni faire un ordre par id ou par parentId, ni même par ordre alphabétique … tu es en train de nous demander de trouver une requête pour mettre tes infos dans le “désordre” …

A moins de coder ça en dur (avec un tableau par exemple) je vois pas trop comment tu pourrais faire ?
Edité le 17/08/2007 à 16:22

Bonjour,
ça s’appelle une requête hiérarchique: impossible avec une auto-jointure classique (qui ne retournerais qu’un niveau de hiérarchie).

La syntaxe n’existe qu’en Oracle SQL à ma connaissance, mais comme il était prévu de l’intégrer dans une version future du SQL ANSI, ça a p-e changé.


select LEVEL, id, parentid, name 
 from UserTable
 start with id=1
 connect by prior id = parentid

“connect by” l’équivalent d’une autojointure en hiérarchique
“prior id” valeur de la clef parent comparée à “parentid” de l’enfant
starts with: condition indiquant la racine de l’arbre

sources:
www.psoug.org…
www.ss64.com…

pour la reconnaissance éternelle, j’accepte les dons réguliers par PayPal, y compris post-mortem. :ane:
Edité le 17/08/2007 à 16:30

Et l’autre truc que tu faisais en pgSQL?

J’ai toujours pas installé pg-SQL… tu crois que ça marcherais?

D’après le site de pg-SQL, c’est supporté voir ici[/url] et [url=http://www.postgresqlfr.org/?q=node/91]ici

J’adore la réaction de l’un des développeurs :

Impressionnant, on va baisser la tête pour éviter les balles, et espérer que ça va devenir standard.

Tu sous entends que c’est pas toi qui nous parlait des prouesses de pgSQL ?
Edité le 17/08/2007 à 17:27

::heink: Tu crois qu’un l33t g33k du skull m’a ch34t3 mon compte?
tu ne me confond pas avec mandar au moins?

connect by existe avec pg :oui:


[quote="Sans-Nom"] [quote="deltree"] J'ai toujours pas installé pg-SQL... tu crois que ça marcherais? [/quote] Tu sous entends que c'est pas toi qui nous parlait des prouesses de pgSQL ? [/quote] c'était moi [:shy]

Non c’est avec benj que je te confonds :slight_smile:

En attendant, j’attend la reconnaissance éternelle, c’est à partir de quand? :ane:

(ça me rappelle un gars de l’exploit, “si j’avais reçu 1 Euro à chaque fois que j’ai entendu cette phrase, je serais riche!”)

Ben vu que je te confond avec benj, on ne peut décemment pas parler de reconnaissance tout court :wink:
Edité le 20/08/2007 à 11:06

:o

(c’est décemment que tu voulais dire?)

Tss. Ce con de correcteur n’a pas été foutu de m’aider sur le coup.

Bref, arrêtons la pollution de ce topic :slight_smile: