sql >> Databáze >  >> RDS >> Oracle

Stromová struktura v SQL v Oracle. Jak zobrazit strom, podřízené uzly a nadřazené uzly v SQL Oracle

Dotaz – celá stromová struktura :

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

Dotaz – děti daného zaměstnance :

K tomu nepotřebujete hierarchický dotaz.
(Rodič je dán proměnnou vazby :parent_id )

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

Dotaz – Potomci daného zaměstnance :

Stejný dotaz jako pro celý strom, ale s jiným počátečním bodem
(Rodič je dán proměnnou vazby :parent_id )

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

Dotaz – Zaměstnanec a jeho předci :

Podobné jako v předchozím dotazu, ale s CONNECT BY obráceně a nebudete muset objednávat sourozence, protože na jednoho zaměstnance bude připadat pouze jeden přímý vedoucí.
(Zaměstnanec je dán proměnnou vazby :employee_id )

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

Dotaz – manažer zaměstnance :

Totožné s předchozím dotazem, ale s filtrem LEVEL = 2 získat pouze bezprostřední nadřazený řádek.
(Zaměstnanec je dán proměnnou vazby :employee_id )

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



  1. Jak nastavit výchozí hodnotu pro existující sloupec

  2. Rychlé rozdělení na oddíly

  3. Recursion On Database Query k získání hierarchického výsledku pomocí Hibernate - Java

  4. Vytvořte parametrizované VIEW v SQL Server 2008