2016-12-30 2 views
1

У меня есть две таблицы, и это название таблицы «номера» Table Rooms и другой является «заказы» !Table BookingsЯ хочу найти между двумя датами в SQL

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

book_form = "2016-12-30" и book_to = "2016-12-31"

будет возвращена истина, так это две даты не существует в таблице «заказы», ​​и при поиске между

book_form = "2016-12-30" и book_to = "2017-01-05" или book_form = "2017-01-03" и book_to = "2017-01-15"

будет возвращать ложь, потому что эта дата существует в таблице заказов.

Это мой запрос.

select * from rooms join room_book on rooms.room_id = room_book.room_id 
where status = 'available' and room_book.book_from NOT BETWEEN '2016-12-30' 
AND room_book.book_to NOT BETWEEN '2016-12-31' 
+0

Вы постоянно упоминаете столбец book_fORm. Вы имеете в виду book_fROm? – Strawberry

+0

И см. Http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql -query – Strawberry

ответ

0

Попробуйте один вернуть все записи между двумя датами

select * from rooms 
join room_book on rooms.room_id = room_book.room_id 
where status = 'available' 
and room_book.book_from >= '2016-12-30' AND room_book.book_to <= '2016-12-31' 

убедитесь, что его полезным для вас

+0

Ваш запрос ничего не возвращает. –

+0

возвращает пустые результаты. –

+0

Это еще впереди. – Strawberry

1

Ответ от Кишана Patel возвращает все записи между двумя датами. Поэтому, если вам нужна истинная или ложная, если комната доступна между двумя датами, вы можете сделать что-то вроде этого:

SELECT IF(COUNT(*) > 0, TRUE, FALSE) AS NewResult 
from rooms 
join room_book on rooms.room_id = room_book.room_id 
where status = 'available' 
and room_book.book_from >= '2016-12-30' AND room_book.book_to <= '2016-12-31' 
+1

right my query return records, если номер забронирован между датами, поэтому возврат пустого результата означает, что между двумя датами не предусмотрено бронирование. –

+0

Да, вы можете просто выбросить пользовательскую ошибку или использовать функцию count –

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