2011-06-18 14 views
2

試圖建立與項目預約系統(即卷軸機),現在我想用AJAX檢查wheter定ITEM_ID定的開始日期和結束日期如何處理MySQL中的重疊日期?

編輯用戶時可用:是有點不清楚,我想用MySQL和PHP來完成,AJAX只是我要求結果的方式(可用是/否)

我該如何解決這個問題?

我的表看起來 '喜歡' 這樣的:

reservation_id int PK 
reservation_createDate datetime 
reservation_startDate datetime 
reservation_endDate datetime 
item_id int FK(items.item_id) 

比方說,我在DB已經 '保留' 的情況如下: (對於convienience,所有ITEM_ID = 1)

reservation_id 1, item_id 1, from 2011-7-10 till 2011-7-14 
reservation_id 2, item_id 1, from 2011-7-14 till 2011-7-16 
reservation_id 3, item_id 1, from 2011-7-16 till 2011-7-20 

並且用戶想要保留item_id 1從2011年7月12日至2011年7月18日,這正如你所看到的將不會因爲所有3個預留的方式.. 我怎麼會這樣做與MySQL?

+2

你在你的SQL表使用實際日期字段的重疊? – Trey

+0

使用AJAX(含義:JS),使用PHP(請參閱標記)或使用MySQL:您現在想要使用哪些? :? – KingCrunch

+0

上面編輯的帖子,我確實希望它與PHP/MySQL,是的,我使用日期時間字段 – Sander

回答

3
SELECT COUNT(*)<1 AS Available FROM `TABLE` WHERE (`startDate`>CHECKING_START_TIME AND `startDate`<CHECKING_END_TIME) OR (`endDate`>CHECKING_START_TIME AND `endDate`<CHECKING_END_TIME) OR (`startDate`<CHECKING_START_TIME AND `endDate`>CHECKING_END_TIME) 

如果結果大於0,則有

+0

這是部分正確的,在你的答案壽,如果我進入2011-7-11直到2011-7-12給我0結果,而在DB中有10到14的預訂.. – Sander

+0

@桑德,DOH!哈哈我增加了一個條件來解決這種情況 – Shad

+0

好吧!我想我們現在有了所有的可能性:D – Sander