Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Um zu überprüfen, ob das Zimmer zwischen den Daten verfügbar ist

Dies wird Ihre spezielle Frage mit Ja oder Nein beantworten. Ich bin mir nicht sicher, ob es nützlich ist, da die Datumssuchwerte alle spezifisch in einer fest codierten Liste sind.

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

Wenn der Sinn Ihrer Logik darin besteht, mindestens ein offenes zu finden date, dann könnten Sie so etwas versuchen:

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

Das Problem wird darin bestehen, dass Sie den Wert 4 jetzt fest codiert haben, der später in der Abfrage an die Anzahl der Daten in der Liste gebunden ist. Es gibt Möglichkeiten, dies dynamischer zu handhaben, aber aus Ihrer Frage geht nicht ganz klar hervor, wie dies am besten zu tun ist.