Bonjour à tous,
J'aimerais se cela est possible déterminer en une seule requête SQL, les couples feuille n - feuille p (avec n = dernier niveau de la hiérarchie et p = niveau 2) d'une table hiérachique. Je suis sous Oracle 9i.
Ma table est définit de la façon suivante
et j'ai une hiérarchie sur des éléments allant de 1 (root) à n (supérieur à 2 forcément).
Code : Sélectionner tout - Visualiser dans une fenêtre à part TABLE (id, id_papa)
Il me serait facile de le faire viadu PL/SQL en me servant de la fonction sys_connect_by_path... mais le but est de le faire en SQL.
Vu qu'une hiérachie séparent ces feuilles je ne peux pas faire par exemple:
si je veux la feuille 4 et 2 je devrais faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select table1.id, table2.id_papa from table1, table2 where table1.id_papa = table2.id
du coup me requête est assez statique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select table1.id, table3.id_papa from table1, table2, table3 where table1.id_papa = table2.id and table2.id_papa = table3.id
Je sais que pour récupérer un niveau de hiérarchie n je dois faire
Mais dans ce cas quel serait le lien à faire pour obtenir la feuille 2 et la dernière feuille de la hiérarchie?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select id, id_papa from table where level=n start with id_papa is null connect by id_papa = prior id
Déjà, est-ce que ce moyen existe? Autrement qu'en faisant du PL/SQL et en n'utilisant seulement les fonctions fournis avec la 9i?
Merci d'avance à tous si vous avez des idées, des pistes ou ne serait-ce qu'une réponse du type "arrête de chercher ce n'est pas possible en SQL"...
Amicalement
Gojira
Partager