Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL За проверка дали стаята е свободна между датите

Това ще отговори на конкретния ви въпрос с да или не. Не съм сигурен, че е полезно, тъй като стойностите за търсене на дата са специфични в твърдо кодиран списък.

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");

Ако смисълът на вашата логика е предназначен да намерите поне един отворен дата, тогава можете да опитате нещо подобно:

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");

Проблемът ще бъде, че сте кодирали твърдо стойността 4 сега, която е обвързана с броя на датите в списъка по-късно в заявката. Има начини да се справите с това по-динамично, но от въпроса ви не става съвсем ясно кой е най-добрият начин за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Фатална грешка:Клас 'Swift_smtpTransport' не е намерен в

  2. Извличане на ден/месец/година от времеви печат на MYSQL

  3. PHP MySQL търсене с множество критерии

  4. Как да съхранявам XML данни в mysql база данни? Не искам чужди ключове като луд

  5. Безплатен инструмент за синхронизиране на MySQL