sql >> Databáze >  >> RDS >> Mysql

SQL Chcete-li zkontrolovat, zda je pokoj volný mezi termíny

Tím odpovíte na vaši konkrétní otázku ano nebo ne. Nejsem si jistý, zda je to užitečné, protože hodnoty vyhledávání podle data jsou všechny specifické v pevně zakódovaném seznamu.

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

Pokud smyslem vaší logiky je najít alespoň jeden otevřený datum, pak můžete zkusit něco takového:

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

Problém bude v tom, že jste nyní pevně zakódovali hodnotu 4, která je svázána s počtem dat v seznamu později v dotazu. Existují způsoby, jak to zvládnout dynamičtěji, ale z vaší otázky není zcela jasné, jak to nejlépe udělat.



  1. Problémy s obtékáním složitých SQL dotazů na odstranění

  2. Něco není v pořádku s Hibernate DB connection pooler c3p0

  3. Doporučený způsob importu souboru .csv do Microsoft SQL Server 2008 R2?

  4. Vrátit všechny cizí klíče a KONTROLA omezení v databázi SQL Server (příklady T-SQL)