Bonjour,
Pour la structure suivante :
stockée dans une table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 A |-B |-C |-D |-E |-F |-G H |-I |-J
Je veux obtenir, via une requête SQL pour chaque enregistrement, non pas son parent direct, mais la racine de l'arbre, c'est à dire :
J'ai réussi à le faire via cette requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 A |-B -> A |-C -> A |-D -> A |-E -> A |-F -> A |-G -> A H |-I -> H |-J -> H
SELECT Substr(SYS_CONNECT_BY_PATH(Id,'-'),2,Instr(SYS_CONNECT_BY_PATH(Id,'-'),'-',1,2)-2 As IdRacine, Id
FROM MaTable
Start With Id In ('A','H')
CONNECT BY PRIOR Id = IdParent;
Je me demandais si je n'étais pas en train de faire une requête un petit peu compliquée, et s'il n'y avait pas une fonction Oracle qui retournait directement ce que je cherche.
Merci
Yann
Partager