Я нахожусь на своем третьем решении, и все они производят те же результаты, что и все коттеджи в рамках арендной системы.Доступные даты с коттеджей Бронирование
Это должны быть только отображенные коттеджи, которые доступны и не забронированы или заблокированы.
Я делаю что-то неправильно с этими запросами?
Available Dates with Reservations и Date Range for Reservations
запросы Один из диапазона дат для бронирования
SELECT *
FROM `rentals`
WHERE `rental_id` NOT IN (
SELECT `rental_id`
FROM `reservation_dates`
WHERE `end_date` >= $start AND `start_date` <= $end
)
Запрос Два из доступных дат с оговорками
SELECT *
FROM `rentals`
LEFT JOIN `reservation_dates` ON `reservation_dates.rental_id` = `rentals.rental_id`
WHERE (((`reservation_dates.end_date` NOT between $start AND $end) AND
(`reservation_dates.start_date` NOT between $start AND $end)) OR
(`reservation_dates.reservation_id` IS NULL)
)
Вот мои три табла У меня есть. В апартаментах есть все коттеджи и детали, reservation_dates используется для бронирования и зарезервированных дат. Block_date - дополнительная таблица для блокировки дат, которые не могут быть зарезервированы. Я начал с подключения первых двух таблиц, и я получаю все коттеджи, когда он должен просто хватать те, которые доступны. Похоже, что резервирование игнорируется.
Table 'rentals'
rental_id int
Table 'reservation_dates'
reservation_id int
rental_id int
start_date date
end_date date
Table 'blocked_dates'
blocked_id int
rental_id int
date_from date
date_to date
Ваш второй запрос использует таблицу, называемую резервированием, - это опечатка для резервирования_данных? – andrewsi
Кажется, что запрос 1 должен вернуть именно то, что вы хотите ... если я не пропущу что-то очевидное –
Это была опечатка; просто заметил это и исправьте. Я попробовал оба этих запроса, оба работают, оба не дают результатов, которые я ищу. Они отображают все арендные платы, когда они игнорируют зарезервированные. – Tim