2016-08-26 5 views
0

Я хочу, чтобы в результате были доступны номера между двумя датами для обеих комнат.показать результат двух диапазонов дат?

Мой запрос

SELECT * 
FROM `roomcalendar` 
WHERE day BETWEEN '2016-08-29' and '2016-08-31' 

Результат enter image description here

Этот запрос не показывает какого-либо результата.

select * 
FROM roomcalendar 
WHERE day between '2016-08-30' and '2016-08-31' 
AND avaroom != 0 having count(*) = datediff('2016-08-31','2016-08-30') 

Я могу использовать, где roomname = 'Room-A', но я не хочу его использовать. Любой другой способ получить оба свободных номера между двумя датами с названием комнаты?

+1

у вас нет 'group by', поэтому ваш' count (*) 'является неопределенным. –

+0

@MarcB Можете ли вы показать, как использовать группу. ? Благодарю. –

+0

любая идея получить результат имени комнаты. он всегда показывает только один результат. –

ответ

0

Если я правильно понимаю ваш вопрос, что вам нужно может быть что-то вроде:

SELECT r.roomname, SUM(r.avaroom) as availableRooms 
FROM roomcalendar r 
WHERE DAY BETWEEN '2016-08-29' AND '2016-08-31' 
GROUP BY r.roomname 

Это я дам вам:

+----------+----------------+ 
| roomname | availableRooms | 
+----------+----------------+ 
| Room-A |    5 | 
| Room-B |    4 | 
+----------+----------------+ 

Является ли это то, что вы хотите?

0
SELECT * 
FROM `roomcalendar` r 
WHERE DAY BETWEEN '2016-08-29' AND '2016-08-31' AND r.`avaroom`>0 
ORDER BY r.`day` 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, так как это уменьшает читаемость кода и объяснений! – FrankerZ

Смежные вопросы