Obtenir la racine dans une requête récursive
Bonjour,
Pour la structure suivante :
Code:
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:
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