我有下表:時間限制查詢
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