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

Logic đệ quy trong PHP + MySQL

Sử dụng truy vấn cho từng loại đệ quy, được hợp nhất với nhau.

Các đệ quy hàng tuần và hàng tháng sử dụng một số truy vấn được kết hợp chéo để tạo ra một phạm vi số để thêm vào ngày. Điều này đối phó với tối đa 1000 cuộc hẹn lặp lại nhưng dễ dàng mở rộng thành nhiều hơn (nếu cuộc hẹn muốn lặp lại trong hơn ~ 20 năm).

SELECT a.appoinemnt_id, a.user_id, a.recur_type, a.date AS appoint_date
FROM tbl_appointment a
WHERE a.recur_type = 0
HAVING appoint_date BETWEEN '2014-07-01' AND '2014-07-31'
UNION
SELECT a.appoinemnt_id, a.user_id, a.recur_type, DATE_ADD(a.date, INTERVAL units.i + tens.i * 10 WEEK) AS appoint_date
FROM tbl_appointment a
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)units
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)tens
WHERE a.recur_type = 1
HAVING appoint_date BETWEEN '2014-07-01' AND '2014-07-31'
UNION
SELECT a.appoinemnt_id, a.user_id, a.recur_type, DATE_ADD(a.date, INTERVAL units.i + tens.i * 10 MONTH) AS appoint_date
FROM tbl_appointment a
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)units
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)tens
WHERE a.recur_type = 2
HAVING appoint_date BETWEEN '2014-07-01' AND '2014-07-31'

SQL fiddle cho điều này tại đây:-

http://www.sqlfiddle.com/#!2/6346a2/2




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa INDEX, PRIMARY, UNIQUE, FULLTEXT trong MySQL?

  2. Hàm gọi MySqlCommand

  3. THAY THẾ ký tự dòng mới trong MYSql không hoạt động

  4. Mệnh đề 'WHERE' trong MySQL loại trừ các kết quả trong truy vấn con

  5. Một cách để đọc dữ liệu bảng từ Mysql sang Pig