sql >> Database >  >> RDS >> Oracle

Boomstructuur in sql in Oracle.Hoe boom, onderliggende knooppunten en bovenliggende knooppunten in SQL Oracle weer te geven

Query - De hele boomstructuur :

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

Query - De kinderen van een bepaalde werknemer :

U hebt hiervoor geen hiërarchische query nodig.
(De ouder wordt gegeven door de bindvariabele :parent_id )

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

Query - De nakomelingen van een bepaalde werknemer :

Dezelfde query als voor de hele boom, maar met een ander startpunt
(De ouder wordt gegeven door de bindvariabele :parent_id )

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

Query - De werknemer en hun voorouders :

Gelijk aan de vorige zoekopdracht, maar met de CONNECT BY omgekeerd en u hoeft de broers en zussen niet te bestellen, aangezien er slechts één directe manager per werknemer is.
(De werknemer wordt gegeven door de bindvariabele :employee_id )

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

Query - De manager van de werknemer :

Identiek aan de vorige zoekopdracht maar met een filter LEVEL = 2 om gewoon de directe bovenliggende rij te krijgen.
(De werknemer wordt gegeven door de bindvariabele :employee_id )

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



  1. Vervang een tekenreeks door een andere tekenreeks in SQL Server (T-SQL)

  2. Een overzicht van SQL Join-types met voorbeelden

  3. functie om te controleren of SQLite journal_mode=WAL of journal_mode=DELETE gebruikt

  4. Hoe commentaar te geven in SQL