Bonjour
J'ai une table qui n'a pas vraiment hierarchique, dans laquelle j'aurais besoin d'une hierarchie, du coup j'ai créée plus ou moins ma hierarchie.
Les données ressemblent à ça :
v_ma_vue
OBJECTID, TYPE (E ou B), OBJECTID_BPC (un objectid distant)
et ca ressemble à ca :
1 B bpc1
2 E bpc1
3 E bpc1
4 B bpc2
5 B bpc3
6 E bpc3
7 B bpc4
8 E bpc4
9 E bpc4
En gros toutes les lignes de type B on une un objectid_bpc différent
et toutes les lignes E ont un objectid_bpc qui correspond à celui d'une ligne B (me parlez pas de l'organisation des données, c'est pas moi qui l'ait fait )
Et j'ai besoin d'une requête hierarchique parce que je voudrais trier mes lignes de type B seulement. (et le order siblings by pourrait me permettre de faire ca)
Alors voilà comment j'ai voulu feinter et je l'avoue ca marche pas du tout
l'union c pour avoir une ligne racine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select vv.objectid, vv.objectid_parent from ( SELECT decode(v.type, 'B', V.OBJECTID_BPC, 9999) as objectid, decode(v.type, 'E', V.OBJECTID_BPC, 1) as objectid_parent, v.TYPE as type FROM v_ma_vue v, WHERE V.OBJECTID = 68034884 union select 1 as objectid, null as objectid_parent, null as type from BASEVIDE) vv start with vv.objectid = 1 connect by prior vv.objectid = vv.objectid_parent
et sinon je transforme mes objectid_bpc distant en id principal pour mes lignes de type B et en objectid_pere pour mes lignes de type E
Vous trouvez ca moche vous aussi ?
Partager