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

SQL Để kiểm tra xem phòng trống giữa các ngày

Điều này sẽ trả lời câu hỏi cụ thể của bạn có hoặc không. Tôi không chắc nó hữu ích vì các giá trị tìm kiếm ngày đều cụ thể trong danh sách được mã hóa cứng.

select coalesce(max('no'), 'yes') as available
from tbl t           
where room_type_id = 23 and
    dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00", 
           "2018-03-08 00:00:00", "2018-03-09 00:00:00");

Nếu cảm giác logic của bạn là nhằm tìm ra ít nhất một điểm mở ngày sau đó bạn có thể thử một cái gì đó như thế này:

select case when count(*) = 4 then 1 else 0 end as whatever_this_means
from tbl t
where room_type_id = 23 and
    dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00", 
           "2018-03-08 00:00:00", "2018-03-09 00:00:00");

Vấn đề sẽ là bạn đã mã hóa cứng giá trị 4 bây giờ được gắn với số ngày trong danh sách sau này trong truy vấn. Có nhiều cách để xử lý điều này một cách linh hoạt hơn nhưng không hoàn toàn rõ ràng đối với câu hỏi của bạn cách tốt nhất để làm điều đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql tham gia từ nhiều bảng

  2. Đặt kết quả biến, từ truy vấn

  3. Làm cách nào để thay đổi định nghĩa cột MySQL?

  4. chọn người dùng có nhiều hơn một bản ghi riêng biệt trong mysql

  5. JUser ::_ load:Không thể tải người dùng mặc dù người dùng tồn tại trong cả 3 bảng joomla chính