Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL Para verificar se o quarto está disponível entre as datas


Isso responderá à sua pergunta específica com sim ou não. Não tenho certeza se é útil, pois os valores de pesquisa de data são todos específicos em uma lista codificada.
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");

Se o sentido da sua lógica pretende encontrar pelo menos um aberto date então você pode tentar algo assim:
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");

O problema será que você codificou o valor 4 agora, que está vinculado ao número de datas na lista posteriormente na consulta. Existem maneiras de lidar com isso de forma mais dinâmica, mas não está totalmente claro na sua pergunta a melhor maneira de fazer isso.