我正在为我的学校创 build 备预订 (PHP/MySQL)。
我的数据库如下所示:
tblEvents:
id
start
end
equipID
tblEquipment:
id
name
description
我想知道根据用户的时间参数查询数据库以查看某个项目是否“不可用”的最佳方法。
例如,如果我有以下数据:
tblEvents:
id start end equipID
1 1251312300 1251324000 1
用户提交查询,查看“equipID”1 是否可用,然后输入:
1251300300 作为他们的开始,1251524000 作为他们的结束。
任何有关开始此操作的帮助都会很棒。谢谢。
最佳答案
我对此不是 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 和@equipID 替换为用户输入的适当设备ID 以及开始和结束时间。如果此查询没有返回结果,则不应存在时间冲突。
基本上它会检查这 3 种情况,其中 * 是您的开始和结束时间,- 是未使用的时间,| 是您的开始和结束时间。是时候被别人使用了:
-|||||*|||||------*------
------*--------|||*||||--
------*--|||||||--*------
关于php - 确定 MySQL Select 的逻辑 - 预订系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302066/