Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Per verificare se la camera è disponibile tra le date

Questo risponderà alla tua domanda particolare con sì o no. Non sono sicuro che sia utile poiché i valori di ricerca della data sono tutti specifici in un elenco codificato.

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 il senso della tua logica è inteso a trovare almeno un aperto data allora potresti provare qualcosa del genere:

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

Il problema sarà che ora hai codificato il valore 4 che è legato al numero di date nell'elenco più avanti nella query. Ci sono modi per gestirlo in modo più dinamico, ma dalla tua domanda non è del tutto chiaro quale sia il modo migliore per farlo.