Bonjour,

Pour la structure suivante :
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
stockée dans une table.

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 :
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
J'ai réussi à le faire via cette requête :

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