sql >> Base de Datos >  >> RDS >> Oracle

Estructura de árbol en sql en Oracle. Cómo mostrar el árbol, los nodos secundarios y los nodos principales en SQL Oracle

Consulta:toda la estructura de árbol :

SELECT *
FROM   Employee
START WITH ParentID IS NULL
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;

Consulta:los hijos de un empleado determinado :

No necesita una consulta jerárquica para esto.
(El padre lo proporciona la variable de vinculación :parent_id )

SELECT *
FROM   Employee
WHERE  ParentID = :parent_id
ORDER BY LastName, FirstName, ID;

Consulta:los descendientes de un empleado determinado :

La misma consulta que para todo el árbol pero con un punto de inicio diferente
(El padre lo proporciona la variable de vinculación :parent_id )

SELECT *
FROM   Employee
START WITH ParentID = :parent_id
CONNECT BY PRIOR ID = ParentID
ORDER SIBLINGS BY LastName, FirstName, ID;

Consulta - El empleado y sus ascendientes :

Similar a la consulta anterior pero con CONNECT BY al revés y no necesitará pedir a los hermanos, ya que solo habrá un gerente inmediato por empleado.
(El empleado viene dado por la variable de vinculación :employee_id )

SELECT *
FROM   Employee
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;

Consulta:el administrador del empleado :

Idéntica a la consulta anterior pero con filtro LEVEL = 2 para obtener simplemente la fila principal inmediata.
(El empleado viene dado por la variable de vinculación :employee_id )

SELECT e.*
FROM   Employee e
WHERE  LEVEL = 2
START WITH ID = :employee_id
CONNECT BY PRIOR ParentID = ID;