2. 11-2 Copyright Oracle Corporation, 1998. Tous droits réservés.
Objectifs
A la fin de ce chapitre, vous saurez :
• Décrire le concept d'une requête
hiérarchique
• Créer un état sous forme d'arbre
• Mettre en forme des données
hiérarchiques
• Exclure des branches de la structure
arborescente
www.TelechargerCours.com
3. 11-3 Copyright Oracle Corporation, 1998. Tous droits réservés.
Quand est-il Possible d'Utiliser
une Requête Hiérarchique ?
EMPNO ENAME JOB MGR
--------- ---------- --------- ---------
7839 KING PRESIDENT
7698 BLAKE MANAGER 7839
7782 CLARK MANAGER 7839
7566 JONES MANAGER 7839
7654 MARTIN SALESMAN 7698
7499 ALLEN SALESMAN 7698
7844 TURNER SALESMAN 7698
7900 JAMES CLERK 7698
7521 WARD SALESMAN 7698
7902 FORD ANALYST 7566
7369 SMITH CLERK 7902
7788 SCOTT ANALYST 7566
7876 ADAMS CLERK 7788
7934 MILLER CLERK 7782
4. 11-4 Copyright Oracle Corporation, 1998. Tous droits réservés.
Structure Arborescente
JONES BLAKE
SCOTT FORD
KING
ALLEN WARD MARTIN TURNER JAMES
ADAMS SMITH
EMPNO = 7839
MGR = 7839
MILLER
CLARK
www.TelechargerCours.com
5. 11-5 Copyright Oracle Corporation, 1998. Tous droits réservés.
Syntaxe Hiérarchique
expr comparison_operator expr
SELECT[LEVEL], column, expr...
FROM table
[WHERE condition(s)]
[START WITH condition(s)]
[CONNECT BY PRIOR condition(s)];
condition:
www.TelechargerCours.com
6. 11-6 Copyright Oracle Corporation, 1998. Tous droits réservés.
Parcours de l'Arbre
DIRECTION
DU HAUT VERS LE BAS Column1 = CLE PARENT
Column2 = CLE ENFANT
DU BAS VERS LE HAUT Column1 = CLE ENFANT
Column2 = CLE PARENT
Parcours du haut vers le bas sur la table
EMP.
CONNECT BY PRIOR column1 = column2
... CONNECT BY PRIOR empno = mgr
www.TelechargerCours.com
7. 11-7 Copyright Oracle Corporation, 1998. Tous droits réservés.
Parcours de l'Arbre
POINT DE DEPART
• Indique la condition à remplir
• Accepte tous les prédicats valides
Sur la table EMP, commencer par l’employé
Blake.
... START WITH ename = ‘BLAKE’
START WITH column1 = value
www.TelechargerCours.com
8. 11-8 Copyright Oracle Corporation, 1998. Tous droits réservés.
Parcours de l'Arbre
EMPNO ENAME JOB MGR
------- ---------- --------- ---------
7698 BLAKE MANAGER 7839
7839 KING PRESIDENT
SQL> SELECT empno, ename, job, mgr
2 FROM emp
3 CONNECT BY PRIOR mgr = empno
4 START WITH empno = 7698;
www.TelechargerCours.com
9. 11-9 Copyright Oracle Corporation, 1998. Tous droits réservés.
Parcours de l'Arbre
Walk
------------------------------
KING reports to
BLAKE reports to KING
MARTIN reports to BLAKE
ALLEN reports to BLAKE
TURNER reports to BLAKE
JAMES reports to BLAKE
...
14 rows selected.
SQL> SELECT ename||' reports to '||PRIOR ename "Walk"
2 FROM emp
3 CONNECT BY PRIOR empno = mgr
4 START WITH ename = 'KING';
www.TelechargerCours.com
10. 11-10 Copyright Oracle Corporation, 1998. Tous droits réservés.
Classement des Lignes avec la
Pseudocolonne LEVEL
Niveau 1
racine/parent
BLAKE
KING
ALLEN WARD MARTIN TURNER JAMES
CLARK
MILLER
JONES
SCOTT FORD
ADAMS SMITH
Niveau 2
parent/enfant
Niveau 3
parent/enfant
/feuille
Niveau 4
feuille
www.TelechargerCours.com
11. 11-11 Copyright Oracle Corporation, 1998. Tous droits réservés.
Formatage des Etats Hiérarchiques
avec LEVEL et LPAD
Créer un rapport affichant les niveaux
hiérarchiques de la société en commençant par
le plus haut, marquer chaque niveau suivant
par une indentation jusqu'au niveau le plus
bas.
SQL> COLUMN org_chart FORMAT A15
SQL> SELECT LPAD(' ', 3 * LEVEL-3)||ename org_chart,
2 LEVEL, empno, mgr, deptno
3 FROM emp
4 CONNECT BY PRIOR empno = mgr
5 START WITH mgr is NULL;
www.TelechargerCours.com
12. 11-12 Copyright Oracle Corporation, 1998. Tous droits réservés.
Elagage des Branches
Utilisez la clause WHERE
pour éliminer un noeud
individuel.
Utilisez la clause CONNECT BY
pour éliminer une branche.
WHERE ename != ‘SCOTT’ CONNECT BY PRIOR
empno = mgr AND
ename != ‘SCOTT’
JONES
SCOTT FORD
ADAMS SMITH
JONES
SCOTT FORD
ADAMS SMITH
www.TelechargerCours.com
13. 11-13 Copyright Oracle Corporation, 1998. Tous droits réservés.
Tri des Données
SQL>BREAK ON deptno
SQL>SELECT LEVEL,deptno,empno,ename,job,sal
2 FROM emp
3 CONNECT BY PRIOR empno = mgr
4 START WITH mgr is NULL
5 ORDER BY deptno;
Créez un état hiérarchique trié par numéro de
département
www.TelechargerCours.com
14. 11-14 Copyright Oracle Corporation, 1998. Tous droits réservés.
RESUME
• Les requêtes hiérarchiques permettent
d'afficher une relation hiérarchique
existant entre des lignes d'une table.
• Il est possible de déterminer la direction
et le point de départ du parcours.
• L'élagage permet d'éliminer des noeuds
ou des branches.
www.TelechargerCours.com
15. 11-15 Copyright Oracle Corporation, 1998. Tous droits réservés.
Présentation des Exercices
• Différence entre les requêtes
hiérarchiques et les requêtes non
hiérarchiques
• Parcours d'un arbre
• Création d'un état indenté à l'aide de la
pseudocolonne LEVEL
• Elagage de la structure arborescente
• Tri des résultats
www.TelechargerCours.com