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

Truy vấn phân cấp trong MySQL. (kết nối bằng tương đương cho MySQL)

Không có hỗ trợ truy vấn phân cấp gốc trong MySQL.

Đối với một số cấp độ hữu hạn được duyệt qua, chúng tôi có thể viết các truy vấn lấy kết quả cho từng cấp độ và kết hợp các kết quả với một UNION ALL nhà điều hành.

Hoặc, chúng ta có thể viết một chương trình (thủ tục) được lưu trữ MySQL để có cách tiếp cận đệ quy hơn.

Như một ví dụ về cách tiếp cận sử dụng truy vấn SQL gốc:

 SELECT t0.comp_code
   FROM tb_corp t0
  WHERE t0.mgr_emp_no = 111

 UNION ALL

SELECT t1.comp_code
  FROM tb_corp t0
  JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
 WHERE t0.mgr_emp_no = 111

 UNION ALL

SELECT t2.comp_code
  FROM tb_corp t0
  JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
  JOIN tb_corp t2 ON t2.incharge_comp_code = t1.comp_code
 WHERE t0.mgr_emp_no = 111

 UNION ALL

SELECT t3.comp_code
  FROM tb_corp t0
  JOIN tb_corp t1 ON t1.incharge_comp_code = t0.comp_code
  JOIN tb_corp t2 ON t2.incharge_comp_code = t1.comp_code
  JOIN tb_corp t3 ON t3.incharge_comp_code = t2.comp_code
 WHERE t0.mgr_emp_no = 111

v.v ... Cách tiếp cận này có thể được mở rộng đến t4, t5, t6, ... xuống một số cấp độ hữu hạn (hợp lý).

Đối với một cách tiếp cận đệ quy hơn, một chương trình được lưu trữ MySQL (PROCEDURE) có thể được viết.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xếp hạng với hàng triệu mục nhập

  2. Đang tải lớp `com.mysql.jdbc.Driver '. Điều này không được dùng nữa. Lớp trình điều khiển mới là `com.mysql.cj.jdbc.Driver '

  3. Đặt tùy chọn mặc định trong menu thả xuống php và giữ lại khi truy vấn được gửi

  4. Nhóm mệnh đề WHERE trong Codeigniter

  5. Chọn các giá trị riêng biệt dựa trên cột có giá trị ngày lớn nhất từ ​​cột thứ hai