PHP/MySQL 选择
我有一张桌子,上面有特定日期的会议室可用时间。Temp_Res 获取正在进行预订时的时间戳(以锁定这些行)。如果要预订的会议时间为 2 小时,我想获得所有可能的时间段。
日 时 Temp_Res
22 8 0000-00-00 00:00:00
22 9 0000-00-00 00:00:00
22 10 0000-00-00 00:00:00
22 11 2012-05-18 22:02: 00
22 12 2012-05-18 22:02:00
22 13 2012-05-18 22:02:00
22 14 0000-00-00 00:00:00
22 15 0000-00-00 00:00:00
22 16 0000-00-00 00:00:00
22 17 0000-00-00 00:00:00
因此,如果需要的时间槽是 2 小时,则只有 8、9、14、15、16 小时是输出。(然后我会使用小时并添加 2 来获得插槽:8-10、9-11、14-16、15-17 和 16-18)
如果时间段是 3 小时,则只有 8、14、15 小时会是输出和插槽:8-11、14-17、15-18....等
为了能够在 SELECT 中执行此操作(如果可能),必须有一种方法可以查看表中的其他行以确定是否应包括特定行。
1. 是否可以查看其他行并使用带有 WHERE (或类似)的 SELECT 来执行此操作?
2. 如果可能的话,请你引导我走向正确的方向吗?
3. 其他解决方案/想法(以下除外)也非常感谢!
否则我必须通过以下方式解决它:
a)创建一个额外的时隙表
b)有一个额外的列来说明该特定行的最大时隙,见下文。
日时槽 Temp_Res
22 8 3 0000-00-00 00:00:00
22 9 2 0000-00-00 00:00:00
22 10 1 0000-00-00 00:00:00
22 11 0 2012-05- 18 22:02:00
22 12 0 2012-05-18 22:02:00
22 13 0 2012-05-18 22:02:00
22 14 4 0000-00-00 00:00:00
22 15 3 0000- 00-00 00:00:00
22 16 2 0000-00-00 00:00:00
22 17 1 0000-00-00 00:00:00
SELECT Day, Hour FROM table
WHERE Slot>=2 AND Temp_Res<"2012-05-18 22:00:00"
GROUP BY Day, Hour