我接觸到了我的第三個解決方案,它們都產生了與出租系統中所有別墅相同的結果。Cottage預訂的可用日期
它應該只顯示可用的並沒有預訂或封鎖的小屋。
我在做這些查詢有問題嗎?
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)
)
這裏是我的三個TABL我有。出租有所有的小屋和細節,reservation_dates用於預訂和預約日期,blocked_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
你的第二個查詢是使用一個名爲reservations的表 - 是否爲reservation_dates的拼寫錯誤? – andrewsi
似乎查詢1應該返回到你想要的東西...除非我失去了明顯的東西 –
這是一個錯字;只是注意到它並修復它。我確實嘗試了這兩種查詢,兩種都起作用,但都沒有給出我期待的結果。他們在顯示所有租金時忽略保留的租金。 – Tim