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

CONNECT BY или йерархични заявки в RDBMS, различни от Oracle

SQL Server използва изрази за общи таблици (изявление WITH), за да постигнете същото (вижте Рекурсивни заявки, използващи общи изрази за таблица).

Този вид заявка може да се използва и в Oracle (започвайки с 11g, ако не се лъжа).

Получената заявка е по-сложна:

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. Режим на престой и прилагане на Hotpatch в adop R12.2

  2. Как да форматирате числата като римски цифри в Oracle

  3. Oracle:Има ли начин да получите скорошни грешки в синтаксиса на SQL?

  4. INSTR() Функция в Oracle

  5. Многократно вмъкване на SQL оракул