En utilisant le schéma SCOTT fourni par Oracle, voici une requête hiérarchique de la fonction CONNECT BY PRIOR:
SELECT lpad(' ',2*level)||ename as "Arbre"
FROM emp
CONNECT BY PRIOR empno=mgr
START WITH ename = 'KING'
Ça nous donne le résultat suivant:
Arbre
-------------------------------------------
KING
JONES
SCOTT
ADAMS
FORD
SMITH
BLAKE
ALLEN
WARD
MARTIN
TURNER
JAMES
CLARK
Il y a une autre fonction Oracle qui permet d'afficher la concaténation du chemin hiérarchique pour chaque élément listé (SYS_CONNECT_BY_PATH).
SELECT SYS_CONNECT_BY_PATH(ename, ' * ')
FROM emp
CONNECT BY PRIOR empno=mgr
START WITH ename = 'KING'
Ce qui nous donne le résultat suivant:
SYS_CONNECT_BY_PATH(ENAME,'*')
-------------------------------------------
* KING
* KING * JONES
* KING * JONES * SCOTT
* KING * JONES * SCOTT * ADAMS
* KING * JONES * FORD
* KING * JONES * FORD * SMITH
* KING * BLAKE
* KING * BLAKE * ALLEN
* KING * BLAKE * WARD
* KING * BLAKE * MARTIN
* KING * BLAKE * TURNER
* KING * BLAKE * JAMES
* KING * CLARK
13 rows selected
On constate que KING est le président, et par exemple le superviseur de SCOTT est JONES.
SELECT lpad(' ',2*level)||ename as "Arbre"
FROM emp
CONNECT BY PRIOR empno=mgr
START WITH ename = 'KING'
Ça nous donne le résultat suivant:
Arbre
-------------------------------------------
KING
JONES
SCOTT
ADAMS
FORD
SMITH
BLAKE
ALLEN
WARD
MARTIN
TURNER
JAMES
CLARK
Il y a une autre fonction Oracle qui permet d'afficher la concaténation du chemin hiérarchique pour chaque élément listé (SYS_CONNECT_BY_PATH).
SELECT SYS_CONNECT_BY_PATH(ename, ' * ')
FROM emp
CONNECT BY PRIOR empno=mgr
START WITH ename = 'KING'
Ce qui nous donne le résultat suivant:
SYS_CONNECT_BY_PATH(ENAME,'*')
-------------------------------------------
* KING
* KING * JONES
* KING * JONES * SCOTT
* KING * JONES * SCOTT * ADAMS
* KING * JONES * FORD
* KING * JONES * FORD * SMITH
* KING * BLAKE
* KING * BLAKE * ALLEN
* KING * BLAKE * WARD
* KING * BLAKE * MARTIN
* KING * BLAKE * TURNER
* KING * BLAKE * JAMES
* KING * CLARK
13 rows selected
On constate que KING est le président, et par exemple le superviseur de SCOTT est JONES.
Aucun commentaire:
Enregistrer un commentaire