Oracle
 sql >> Baza danych >  >> RDS >> Oracle

CONNECT BY lub zapytania hierarchiczne w RDBMS innych niż Oracle

SQL Server używa wspólnych wyrażeń tabelowych (instrukcja Z), aby osiągnąć to samo (patrz Zapytania rekurencyjne przy użyciu wspólnych wyrażeń tabel).

Tego rodzaju zapytania mogą być również używane w Oracle (zaczynając od 11g, jeśli się nie mylę).

Wynikowe zapytanie jest bardziej złożone:

WITH emp(employee_id, manager_id, job_id, last_name, lvl)
AS (
    SELECT e.employee_id, e.manager_id, e.job_id, e.last_name, 1 lvl
    FROM employees e
    WHERE job_id = 'AD_VP'
    UNION ALL
    SELECT e.employee_id, e.manager_id, e.job_id, e.last_name, r.lvl + 1 lvl
    FROM employees e
    JOIN emp r ON r.employee_id = e.manager_id
)
SELECT LPAD(' ', 2 * (lvl-1)) || last_name org_chart,
    employee_id, manager_id, job_id
FROM emp;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Darmowy ES dla 11.2.0.4 i 12.2 Data wydania

  2. Lekko w pigułce

  3. Agreguj wiersze w instrukcji Oracle SQL

  4. Jak utworzyć użytkownika w Oracle Multitenant 12c bez prefiksu C##?

  5. Rekurencja w Oracle