php - 确定 MySQL Select 的逻辑 - 预订系统

标签 php mysql select

我正在为我的学校创 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/

相关文章:

php - SQL搜索组合

php - MYSQL 合并标签表为一

php - 如何从 mySQL 和 PHP 中检索多维数组的结果?

php - Products 表的结构,用于存储来自各个领域的产品详细信息

mysql - Cricket Manager 的 SQL 查询

PHP continue 内部函数

mysql.connector+mysql 在获取时挂起

sql - SELECT IN 用于大集合

MYSQL:如何限制内连接?

ruby - Nokogiri 选择 last-1 选项值