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:
Or je voudrais avoir la même résultat mais avec;
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
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
14KING 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






Répondre avec citation
Partager