Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

CONNECT BY hoặc các truy vấn phân cấp trong RDBMS khác với Oracle

SQL Server sử dụng biểu thức bảng phổ biến (Câu lệnh WITH) để đạt được điều tương tự (xem Truy vấn đệ quy sử dụng biểu thức bảng thông dụng).

Loại truy vấn này cũng có thể được sử dụng trong Oracle (bắt đầu bằng 11g nếu tôi không nhầm).

Truy vấn kết quả phức tạp hơn:

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. có một hàm PRODUCT giống như có một hàm SUM trong Oracle SQL không?

  2. Xử lý lỗi Oracle

  3. Hàm UPPER () trong Oracle

  4. Cách cập nhật bảng trong oracle

  5. Cách thay đổi mức độ ưu tiên cho chương trình đồng thời