sql >> Database >  >> RDS >> Mysql

SQL Om te controleren of de kamer beschikbaar is tussen de data

Dit zal uw specifieke vraag met ja of nee beantwoorden. Ik weet niet zeker of het nuttig is, aangezien de zoekwaarden voor de datum allemaal specifiek zijn in een hardgecodeerde lijst.

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

Als je logica bedoeld is om ten minste één open . te vinden date, dan zou je zoiets als dit kunnen proberen:

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

Het probleem zal zijn dat je de waarde 4 nu hard hebt gecodeerd, die is gekoppeld aan het aantal datums in de lijst later in de query. Er zijn manieren om dit dynamischer aan te pakken, maar het is niet helemaal duidelijk uit uw vraag hoe u dat het beste kunt doen.



  1. Hoe kan ik veranderingen tussen rijwaarden in een SQL-tabel detecteren en binden?

  2. Automatisch e-mailsysteem om databaseoverzichtsrapport te verzenden

  3. Hoe voeg ik een foto toe aan de mysql-database met behulp van php?

  4. Fout krijgen - ORA-01858:er is een niet-numeriek teken gevonden waar een numeriek werd verwacht