SELECT Hierárquico Sexta-feira, 30 de Dezembro de 2005 Com a utilização das opções START WITH/CONNECT BY dentro de um SELECT, podemos retornar registros de forma hierárquica. O select hierarquico é utilizado para possibilitar uma busca pelos registros mestres e após pelos seus detalhes. Podemos chamar também de busca dos registros Pais e depois pelos seus filhos correspondentes. Um bom exemplo pode ser obtido usando uma das tabelas padrões do Oracle, a tabela EMP. A tabela EMP tem o código do empregado e o código do seu gerente(superior). Montando uma query para buscar de forma hierárquica os empregados e mostrando seus correspondentes gerentes(ou superiores), temos o exemplo abaixo: SELECT LPAD(' ' ,2*level) || ename empregados FROM emp START WITH ename ='KING' CONNECT BY PRIOR empno= mgr; Resultado: EMPREGADOS -------------- KING JONES SCOTT ADAMS FORD SMITH BLAKE ALLEN WARD MARTIN TURNER JAMES CLARK MILLER A clausula START WITH determina a chave inicial da busca. Já a clausula CONNECT BY determina como buscar os filhos de um determinado registro pai, criando uma condição de hierarquia entre os registros. A variável level guarda o nível de cada registro na tabela hierarquica montada. Neste exemplo o KING é o level 1, JONES, BLAKE e CLARK são level 2 e assim por diante. Com isso, foi possível montar os nomes deslocados para a direita, visualizando facilmente a hierarquia existente entre os registros.