2011-03-16 45 views
0

我一直在尋找這個困境的答案,但什麼都沒發現。我希望你能幫助我找出我做錯了什麼。預訂查詢不考慮到達和離開日

我有選擇MySQL查詢只提供apartmens如下:

SELECT * 
FROM apartments 
WHERE apartment_ID NOT IN (SELECT apartment_ID 
          FROM bookings 
          WHERE startDate <= '$endingdate' 
          AND endDate >= '$startingdate')  

的問題是,這個查詢沒有考慮到即出發一天半,有一天,它是可用的。

更好地說明:

如果表「預訂」有一個訂票16-01-2011結束和搜索是從16-01-2011。該公寓應該可用,因爲這是一個「半天」(離開的那天)。該查詢似乎沒有考慮到這一點,並沒有顯示公寓。

請幫忙嗎?

弗朗西斯

回答

0

從您的子查詢中取出=符號,或者至少最後一個,如果某個日期上空出的地點在該日期始終可用。這應該檢查在要求的日期空出的公寓。還要確保您的數據已被轉義。

如果可用性取決於時間,那麼您將需要將日期字段更改爲日期時間。

+0

嗨貝琳達,我實際上雖然= =標誌是必要的,選擇正確的開始和結束的一天。我現在擺脫它,它似乎工作。非常感謝你。真的很感激你的幫助 – FFSS 2011-03-16 12:16:52

+0

@Francesco等號檢查小於或等於或大於或等於。你只是想要更少,更多。別客氣。也許你會考慮接受答案。 – Belinda 2011-03-16 12:23:21

1

我沒那麼熟悉MySQL的數據類型,但你肯定的startDate和結束日期不存儲與時間一部分。如果是這種情況,那麼「16-01-2011 16:25」不會小於或等於「16-01-2011」。

+0

嗨Bleeeah,沒有它們存儲爲「日期」沒有時間部分。 – FFSS 2011-03-16 12:04:35