мой номер доступный по умолчанию (avaroom) - 0. я хочу проверить его доступным или нет, когда мы выбираем дату начала и дату окончания.Как проверить все доступные номера между датой начала и окончания?
мой SQL запрос
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-31' and avaroom != 0
Результат будет выглядеть следующим образом.
Я использую этот запрос
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-31' and avaroom != 0
having count(*) = datediff('2016-08-31', '2016-08-26')
результат будет пустым. это правда. потому что я проверяю всю доступную комнату или нет между датой начала и окончания.
Следующий запрос я изменить, чтобы дата начала 26 и дата окончания 27
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-27' and avaroom != 0
having count(*) = datediff('2016-08-27','2016-08-26')
выход будет 1 ряд
Yes.it все же правильно. потому что имеется 26-дневный номер.
снова я проверить дату 26 начала и дата окончания 28.
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-28' and avaroom != 0
having count(*) = datediff('2016-08-28','2016-08-26')
Yes.it еще work.I кажется пустым, потому что 28 номер не available.It также право.
Теперь. я пытаюсь изменить снова. дата начала 29 и дата окончания 30
select *
from roomcalendar
where day between '2016-08-29' and '2016-08-30' and avaroom != 0
having count(*) = datediff('2016-08-30', '2016-08-29')
Opps! он не показывает результата. Я думаю, 29 номеров доступны. он будет показывать 1 строку. правильно? Итак, как получить правильный запрос?
еще раз проверьте еще раз. дата начала 29 и дата окончания 31.Есть будет результат 2-го шоу.
select *
from roomcalendar
where day between '2016-08-29' and '2016-08-31' and avaroom != 0
having count(*) = datediff('2016-08-31','2016-08-29')
но это покажет только один результат.
Как сделать правильный запрос для прохождения всего теста?
Спасибо.
Почему вы добавляете 'count count (*) = lateiff ('2016-08-31', '2016-08-29')'? это будет работать только тогда, когда результат вашего датированного() будет таким же, как и количество возвращенных строк, - в вашем примере, когда вы запрашиваете один дневной диапазон и возвращаете одну строку. попробуйте исключить эту часть запроса! – derelict
@derelict да брат. кто-то дает мне решить проблему. Но это не работает. любая идея для нового запроса для моего требования. Спасибо –
@MinKoKo: что вы точно хотите в качестве выхода? Общее Количество номеров, доступных между выбранными датами или доступными Количество номеров с датами между выбранными датами? –