【问题标题】:Determine Logic for MySQL Select - Reservation System确定 MySQL Select 的逻辑 - 预订系统
【发布时间】:2009-08-19 19:16:33
【问题描述】:

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

我的数据库如下所示:

tblEvents:
 id
 start
 end
 equipID


tblEquipment:
  id
  name
  description

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

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

tblEvents:
  id      start          end         equipID
  1     1251312300    1251324000       1

用户提交查询,查看“equipID”1 是否可用,然后输入:

1251300300 作为开始,1251524000 作为结束。

任何关于开始这个过程的帮助都会很棒。谢谢。

【问题讨论】:

  • 多日结账正常/允许吗?如果是这样,这会使任务变得更棘手,但并非不可能。

标签: php mysql select


【解决方案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 和@equipID 替换为用户输入的相应设备ID 和开始和结束时间。如果这个查询没有返回结果,那么应该没有时间冲突。

基本上它会检查这 3 种情况,其中 * 是您的开始和结束时间,- 是未使用的时间,|是时候被其他人使用了:

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

【讨论】:

    【解决方案2】:
    SELECT * FROM tblEvents
    WHERE NOW() > FROM_UNIXTIME(end)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2015-04-16
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多