次の表があります。
ID | ルームID | コースID | 日(NUM) | 開始(時間) | 終了時間)
これは、私が立ち往生している大規模なクエリの一部です。特定の日に特定の部屋でコース間に休憩時間のないすべての ID を表示するにはどうすればよいですか? ここで行き詰まりました。私は 'ADDTIME()' 関数を使用して、コース 1 の終了時間とコース 2 の開始時間 => 0 の違いを見つける必要があると思います。
あなたが興味を持っているのは完全な利用だけです。1日が7時間(9-5-1時間の昼休み)の場合は、簡単にするために420分と呼びます。次に、420 --Sum(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
そして、いくつかのトゥイッチがあなたのニーズを満たすかどうかを確認してください
しかし、eggyal が言ったように、その日と部屋のデータを取得して、アプリケーション コードでこれを解決する方がおそらく簡単です。