[Oracle 9i] Requête hiérarchique (connect by)
Bonjour.
J'ai un souci pour effectuer une requête hiérarchique. J'ai bien essayé de reproduire l'exemple "classique" mais je n'ai pas tout à fait les mêmes tables.
Car je peux (et je veux ;) ) effectuer la requête de deux façons, à partir de deux tables différentes.
La première table est construite comme un arbre où les pères sont reliés à tous leurs descendants y compris à eux-mêmes, mais (là est la différence avec l'exemple classique) il n'y a pas de colonne vide. Exemple de données:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| PERE_ID FILS_ID
A1 A1
A1 A11
A1 A12
A1 A13
A1 A111
A1 A112
A1 A121
A2 A2
A2 A21
A2 A22
A11 A11
A11 A111
A11 A112
A12 A12
A12 A121
A13 A13
A111 A111
A112 A112
A121 A121 |
La seconde table est une table de lien direct père-fils, dans laquelle les pères ne sont pas liés à eux-mêmes et où il n'y a toujours pas de colonne vide. Exemple:
Code:
1 2 3 4 5 6 7 8 9
| PERE_ID FILS_ID
A1 A11
A1 A12
A1 A13
A2 A21
A2 A22
A11 A111
A11 A112
A12 A121 |
Je me trouve confronté soit à l'erreur "Boucle connect by dans les données utilisateur", soit à une requête sans fin. A noter que NOCYCLE et PARENT n'ont pas l'air d'être reconnus en 9i.
Pour la première table, j'ai testé quelque chose comme ça:
Code:
1 2 3 4 5
| SELECT LPAD ('+', 2 * (LEVEL - 1), '+') || pere_id
FROM table1
WHERE pere_id <> fils_id
START WITH pere_id = 'A1'
CONNECT BY PRIOR fils_id = pere_id |
J'ai précisé 'A1' pour tester unitairement, sachant que je peux (veux) partir d'un ensemble donné de pères (et donc remplacer 'A1' par ma_vue.pere_id, ma_vue étant dans la même requête).
Pour la seconde table, je n'ai encore rien trouvé de concluant.
Bref, je sens que quelque chose m'échappe... Merci du coup de main! :D