Вот моя база данных (свободные номера в гостинице, упрощенный)MySQL диапазон дат выполнения запроса
rooms_available:
id date_available room_id
================================
1 2013-12-19 2
2 2013-12-20 2
3 2013-12-21 2
4 2013-12-22 2
5 2013-12-23 2
6 2013-12-25 3
номер:
id name minimal_range
================================
2 Apartment A 5
3 Apartment B 1
Я хочу, чтобы запросить все номера, доступные в период с 2013 по 2013 год и 2013-12-22 годы
Мой запрос как:
select *
from rooms_available
where (date='2013-12-20' OR date='2013-12-21' OR date='2013-12-22')
Мои вопросы:
- есть более удобный способ? когда диапазон дат будет равен 2 неделям, запрос также будет очень длинным (что потребует гораздо больше времени для запроса)
- можно было бы рассмотреть минимальные диапазоны - например: room_id 2 доступен только для не менее 5 ночей (см таблицу "номера") -> так выше запрос не должен возвращать никаких записей
Благодарности
Я подозреваю, что это чаще всего хранится, когда комнаты принимаются, а не когда они доступны. – Strawberry
Этот вопрос задан примерно в 100 раз, так что вы можете захотеть проверить уже ответ на вопрос в следующий раз – jeroenvisser101