我有下表:时间限制查询
id | roomid | courseid |日(NUM)|开始(TIME)|结束(TIME)
这是我坚持使用的larget查询的一部分。如何显示特定日期的特定房间课程之间没有时间间隔的所有ID?有点卡在这里。 我想我必须使用'ADDTIME()'函数来找出在course1结束时间和课程2开始时间=>有0的差异。我已经看了很长一段时间了,我卡住了!
我有下表:时间限制查询
id | roomid | courseid |日(NUM)|开始(TIME)|结束(TIME)
这是我坚持使用的larget查询的一部分。如何显示特定日期的特定房间课程之间没有时间间隔的所有ID?有点卡在这里。 我想我必须使用'ADDTIME()'函数来找出在course1结束时间和课程2开始时间=>有0的差异。我已经看了很长一段时间了,我卡住了!
如果你所有感兴趣的是充分利用。 如果一天是7小时,(9-5 - 1小时午餐休息时间),请拨打420分钟让事情变得简单。 然后420 - 总和(MINUTE(TIMEDIFF(T2,T1))= 0意味着房间被订满了
的CTE也许玩弄可以帮助你那里开始尝试用这样的
WITH RU_CTE AS (
SELECT your_fields
FROM RoomUtilization
WHERE day = @DayParameter
AND start = @startTimeParameter
UNION ALL
SELECT your_fields
FROM RoomUtilization RU
WHERE day = RU_CTE.day
AND start = RU_CTE.end
)
SELECT *
FROM RU_CTE
。
,看看一些twiches满足您的需求
但作为eggyal说,它可能更容易获得的一天,房间里的数据,并解决了这个应用程序代码。
你是问如何能够找回,使用SQL,所有'roomid'都有条目在你的表中,从某个给定的'day'开始,从00:00到23:59合计跨度?如果是这样,我想你会发现这不是MySQL很容易告诉你的;您可能需要检索当天的所有客房预订,然后用其他语言扫描它们以确定哪一天(如果有的话)跨越整个一天。 – eggyal 2012-04-25 16:58:42
你的假设非常正确。你可以通过'start(TIME)'命令创建一个视图,然后在该视图中选择'ID',其中'ID'#x的开始值大于'ID'# X-1)。我说“有些价值”,因为你可以指定什么构成“时间中断”。 (也许5分钟是不够的,因为它不值得能够在该时间框架中安排某些事情) – rownage 2012-04-25 17:21:38