Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL Aby sprawdzić, czy pokój jest wolny między datami

To odpowie na Twoje pytanie tak lub nie. Nie jestem pewien, czy jest to przydatne, ponieważ wszystkie wartości wyszukiwania dat są określone na zakodowanej liście.

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

Jeśli sens Twojej logiki ma na celu znalezienie co najmniej jednego otwartego data, możesz spróbować czegoś takiego:

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

Problem polega na tym, że zakodowałeś teraz na stałe wartość 4, która jest powiązana z liczbą dat na liście w dalszej części zapytania. Istnieją sposoby, aby poradzić sobie z tym bardziej dynamicznie, ale z Twojego pytania nie wynika do końca, jaki jest najlepszy sposób, aby to zrobić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stała wartość kolumny w tabeli MySQL

  2. Jak prawidłowo skonfigurować połączenie PDO

  3. Połącz się ze zdalnym serwerem MySQL za pomocą SSL z PHP

  4. parametr other_user_id nie działa w czasie wykonywania, nie dlaczego

  5. cykliczny autoinkrement dla każdej wartości klucza