确定MySQL选择 - 预约系统的逻辑

时间:2009-08-19 19:16:33

标签: php mysql select

我正在为我的学校创建一个设备预留(PHP / MySQL)。

我的数据库如下所示:

tblEvents:
 id
 start
 end
 equipID


tblEquipment:
  id
  name
  description

我想知道根据用户的时间参数查询数据库的最佳方法,以查看某个项目是否“不可用”。

例如,如果我有以下数据:

tblEvents:
  id      start          end         equipID
  1     1251312300    1251324000       1

并且用户提交查询,查看“equipID”1是否可用,并且他们放了:

1251300300作为他们的开始,1251524000作为他们的结束。

任何有关启动此功能的帮助都会很棒。谢谢。

2 个答案:

答案 0 :(得分:1)

我对此并不是100%肯定,但我认为这个查询应该非常接近:

select * from tblEvents
where (@starttime >= start && @starttime <= end) /* Starts while someone else has it */
or (@endtime >= start && @endtime <= end) /* Ends while someone else has it */
or (@startime <= start && @endtime >= end) /* Starts before & ends after someone else has it*/
and equipID = @equipID

替换@starttime,@ endtime&amp; @equipID与相应的设备ID和启动&amp;用户输入的结束时间。如果此查询未返回任何结果,则应该没有时间冲突。

基本上它正在检查这三种情况,其中*是你的开始&amp;结束时间, - 是未使用的时间,和|是时候被其他人使用了:

-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------

答案 1 :(得分:0)

SELECT * FROM tblEvents
WHERE NOW() > FROM_UNIXTIME(end)