Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL Pour vérifier si la chambre est disponible entre les dates

Cela répondra à votre question particulière par oui ou non. Je ne suis pas sûr que ce soit utile car les valeurs de recherche de date sont toutes spécifiques dans une liste codée en dur.

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

Si le sens de votre logique est destiné à trouver au moins une ouverture date, vous pourriez essayer quelque chose comme ceci :

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

Le problème va être que vous avez maintenant codé en dur la valeur 4 qui est liée au nombre de dates dans la liste plus tard dans la requête. Il existe des moyens de gérer cela de manière plus dynamique, mais la meilleure façon de le faire n'est pas tout à fait claire d'après votre question.