Bonjour,

je vais formuler ma question à travers un exemple repris sur internet.

La table

descriptif: contient une liste d'employés identifiés par un numéro ( clé primaire) . Chaque employé a un numéro de manager ( colonne MGR) ce qui créé ainsi une relation hierarchique ( arborescente) entre les employés.

données:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
EMPNO        ENAME             MGR 
--------        --------             -----
7369           SMTIH             7902
7499           ALLEN              7698
7521           WARD             7698
7566           JONES             7839
7654           MARTIN           7698
7698           BLAKE             7839
7782           CLARK            7839
7788           SCOTT            7566
7839           KING               NULL
7844           TURNER           7698
7876           ADAMS            7788

Ce que je veux:
Obtenir une représentation complète de l'arbre représenté dans la table, de la racine aux feuilles ou chaque groupe de fils d'un même sous-noeud est trié sous-forme alphabétique.

Par exemple avec la requête:
SELECT LPAD(' ',3 * LEVEL-3) ||ename AS org_chart,
LEVEL, empno,mgr
FROM emp
START WITH mgr is NULL
CONNECT BY PRIOR empno = mgr;

j'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ORG_CHART                           LEVEL      EMPNO         MGR
---------------------------------    -------      --------         ------
KING                                          1          7839           NULL
   JONES                                     2          7566           7839
      SCOTT                                 3           7788          7566
         ADAMS                              4          7876           7788
      FORD                                   3           7902          7566
         SMITH                               4           7369          7902
   BLAKE                                     2           7698          7839
      ALLEN                                   3          7499           7698
      WARD                                  3           7521           7698
      MARTIN                                3           7654           7698
      TURNER                                3           7844           7698
      JAMES                                  3            7900          7698
   CLARK                                     2           7782          7839
      MILLER                                 3           7934           7782
Or je voudrais avoir la même résultat mais avec;
pour le niveau 2:
d'abord BLAKE puis CLARK puis JONES
et par exemple pour le niveau 3 dans BLAKE ( les subordonnés de blake)
ALLEN, JAMES,MARTIN,TURNER et WARD dans cet ordre. Au final j'aurai celà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
KING
   BLAKE
      ALLEN
      JAMES
      MARTIN
      TURNER
      WARD
   CLARK
      MILLER
   JONES
      FORD
          SMITH
      SCOTT
           ADAMS


Voilà j'éspère avoir été clair. Merci d'avance pour votre aide.

NB: J'utilise oracle 8i