Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Logika rekursif di PHP + MySQL

Menggunakan kueri untuk setiap jenis rekursi, disatukan bersama.

Rekursi mingguan dan bulanan menggunakan beberapa kueri gabungan silang untuk menghasilkan rentang angka untuk ditambahkan ke tanggal. Ini mengatasi hingga 1000 janji temu berulang tetapi mudah diperluas ke lebih banyak (jika janji ingin diulang selama lebih dari ~20 tahun).

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'

Biola SQL untuk ini di sini:-

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. Bagaimana cara menyusun kueri SQL untuk menemukan objek yang merupakan induk dari dua objek spesifik lainnya?

  2. Array multidimensi PHP ke daftar tidak berurutan, membangun jalur url

  3. Bagaimana cara memeriksa apakah koneksi C# — MySQL saya berhasil atau, jika tidak, kembalikan mengapa?

  4. MySQL:Meja panjang vs meja lebar

  5. INDEKS DROP MySQL