Bonjour,
Je vous expose mon problème :
Je suis en Oracle 9i, et j'ai une base de données avec un table où les données sont hiérarchisées selon le shéma suivant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
ID || ID_PARENT || NOM || POSITION
 1 ||      0         || nom || 1
 2 ||      0         || nom || 2
 3 ||      1         || nom || 1
 4 ||      1         || nom || 2
 5 ||      3         || nom || 1
 6 ||      2         || nom || 1
 7 ||      4         || nom || 1
 8 ||      0         || nom || 3
 9 ||      1         || nom || 3
10 ||      4         || nom || 2
Ce que je souhaite faire, c'est afficher ma hiérarchie comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
ID || ID_PARENT || NOM || POSITION
 1 ||      0         || nom || 1
 3 ||      1         || nom || 1
 5 ||      3         || nom || 1
 4 ||      1         || nom || 2
 7 ||      4         || nom || 1
10 ||      4         || nom || 2
 9 ||      1         || nom || 3
 2 ||      0         || nom || 2
 6 ||      2         || nom || 1
 8 ||      0         || nom || 3
Autrement dit, la hiérarchie se fait entre ID_PARENT et ID, et ensuite je souhaite trier par position.
J'ai testé la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select *
from MA_TABLE
start with ID_PARENT=0
connect by ID_PARENT=prior ID
order by POSITION
mais j'ai l'erreur
boucle CONNECT BY dans les données utilisateur
J'ai donc pensé à utiliser le mot clef level
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select *
from MA_TABLE
start with ID_PARENT=0
connect by ID_PARENT=prior ID
order by level||POSITION
mais j'ai la même erreur. Où est mon erreur ? Je ne trouve pas
Merci de votre aide