2011-06-18 15 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