Oracle
 sql >> база данни >  >> RDS >> Oracle

Дървовидна структура в sql в Oracle. Как да покажа дърво, дъщерни възли и родителски възли в SQL Oracle

Запитване – Цялата дървовидна структура :

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

Запитване – Децата на даден служител :

Не се нуждаете от йерархична заявка за това.
(Родителят се дава от променливата за свързване :parent_id )

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

Запитване – Потомците на даден служител :

Същата заявка като за цялото дърво, но с различна начална точка
(Родителят се дава от променливата за свързване :parent_id )

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

Запитване – Служителят и техните предци :

Подобно на предишната заявка, но с CONNECT BY обърнато и няма да е необходимо да поръчвате братята и сестрите, тъй като ще има само един непосредствен мениджър на служител.
(Служителят се дава от променливата за свързване :employee_id )

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

Запитване - Мениджър на служителя :

Идентично на предишната заявка, но с филтър LEVEL = 2 просто да получите непосредствения родителски ред.
(Служителят се дава от променливата за свързване :employee_id )

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между VARCHAR2(10 CHAR) и NVARCHAR2(10)

  2. 6 начина за избор на дублиращи се редове в Oracle

  3. Динамично завъртане на редове в колони в Oracle

  4. Стъпки за синхронизиране в режим на готовност с първична база данни в Oracle

  5. Нови дати за безплатни изпити за сертифициране в Oracle Cloud и Autonomous Database