Filtragem de nós/ramos da árvore |
As cláusulas WHERE e CONNECT BY podem ser utilizadas para filtrar nós da árvore, evitando que sejam apresentados no output. Uma condição colocada na cláusula WHERE permite eliminar um nó. Uma condição na cláusula CONNECT BY permite eliminar todo um ramo.
No exemplo abaixo apenas a linha BLAKE é eliminada, aparecendo os seus 'filhos':
select level, deptno, empno, ename, job, sal from emp where ename!='BLAKE' connect by prior empno=mgr start with mgr is null; LEVEL DEPTNO EMPNO ENAME JOB SAL ---------------------- ---------------------- ---------------------- ---------- --------- ---------------------- 1 10 7839 KING PRESIDENT 5000 2 20 7566 JONES MANAGER 2975 3 20 7788 SCOTT ANALYST 3000 4 20 7876 ADAMS CLERK 1100 3 20 7902 FORD ANALYST 3000 4 20 7369 SMITH CLERK 800 3 30 7499 ALLEN SALESMAN 1600 3 30 7521 WARD SALESMAN 1250 3 30 7654 MARTIN SALESMAN 1250 3 30 7844 TURNER SALESMAN 1500 3 30 7900 JAMES CLERK 950 2 10 7782 CLARK MANAGER 2450 3 10 7934 MILLER CLERK 1300 13 rows selected |
No exemplo seguinte todo o ramo de subordinados de 'BLAKE' é eliminado:
select level, deptno, empno, ename, job, sal from emp connect by (prior empno=mgr) and (ename!='BLAKE') start with mgr is null; LEVEL DEPTNO EMPNO ENAME JOB SAL ---------------------- ---------------------- ---------------------- ---------- --------- ---------------------- 1 10 7839 KING PRESIDENT 5000 2 20 7566 JONES MANAGER 2975 3 20 7788 SCOTT ANALYST 3000 4 20 7876 ADAMS CLERK 1100 3 20 7902 FORD ANALYST 3000 4 20 7369 SMITH CLERK 800 2 10 7782 CLARK MANAGER 2450 3 10 7934 MILLER CLERK 1300 8 rows selected |
Realizado por Turtle Learning ®. Última alteração em 2011-08-14