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

MySQL / PHP - Temukan slot waktu yang tersedia

SELECT a.end AS free_after
FROM bookings a
WHERE NOT EXISTS (
  SELECT 1
  FROM bookings b
  WHERE b.start BETWEEN a.end AND a.end + INTERVAL your_duration HOURS
)
AND a.end BETWEEN start_of_search_window AND end_of_search_window;

Anda hanya perlu memberikan nilai untuk your_duration (bilangan bulat), start_of_search_window (tanggal waktu) dan end_of_search_window (waktu tanggal).

Dan jika Anda ingin lonceng dan peluit....

SELECT free_from, free_until
FROM (
  SELECT a.end AS free_from,
  (SELECT MIN(c.start)
   FROM bookings c
   WHERE c.start > a.end) as free_until
  FROM bookings a
  WHERE NOT EXISTS (
    SELECT 1
    FROM bookings b
    WHERE b.start BETWEEN a.end AND a.end + INTERVAL your_duration HOUR
  )
  AND a.end BETWEEN start_of_search_window AND end_of_search_window
)
ORDER BY free_until-free_from
LIMIT 0,3;

Akan memberi Anda tiga slot terpendek yang tersedia (yaitu yang terdekat dengan ukuran target) di dalam jendela.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pesan tabel MySQL dengan dua kolom

  2. SQL Pilih hanya baris di mana beberapa hubungan yang tepat ada

  3. Aplikasi untuk merekayasa balik MySQL &PostgreSQL DB?

  4. Tabel pembaruan PDO menggunakan array

  5. Opsi pilih dinamis php dan mysql