sql >> Databasteknik >  >> RDS >> Oracle

Trädstruktur i sql i Oracle. Hur man visar träd, underordnade noder och överordnade noder i SQL Oracle

Fråga – hela trädstrukturen :

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

Fråga – barnen till en viss anställd :

Du behöver ingen hierarkisk fråga för detta.
(Föräldern ges av bindningsvariabeln :parent_id )

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

Fråga – ättlingar till en viss anställd :

Samma fråga som för hela trädet men med en annan startpunkt
(Föräldern ges av bindningsvariabeln :parent_id )

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

Fråga – den anställde och deras förfäder :

Liknar den föregående frågan men med CONNECT BY omvänd och du behöver inte beställa syskonen eftersom det bara kommer att finnas en närmaste chef per anställd.
(Den anställde ges av bindningsvariabeln :employee_id )

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

Fråga - Anställds chef :

Identisk med föregående fråga men med ett filter LEVEL = 2 för att bara få den omedelbara överordnade raden.
(Den anställde ges av bindningsvariabeln :employee_id )

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



  1. Att köra SQL-skript genom psql ger syntaxfel som inte förekommer i PgAdmin

  2. Hur man replikerar MySQL-databas till en annan server

  3. Varför fungerar inte min t-sql left join?

  4. Arbeta med SQL-markörer