1

次の表があります。

ID | ルームID | コースID | 日(NUM) | 開始(時間) | 終了時間)

これは、私が立ち往生している大規模なクエリの一部です。特定の日に特定の部屋でコース間に休憩時間のないすべての ID を表示するにはどうすればよいですか? ここで行き詰まりました。私は 'ADDTIME()' 関数を使用して、コース 1 の終了時間とコース 2 の開始時間 => 0 の違いを見つける必要があると思います。

4

2 に答える 2

2

あなたが興味を持っているのは完全な利用だけです。1日が7時間(9-5-1時間の昼休み)の場合は、簡単にするために420分と呼びます。次に、420 ​​--Sum(MINUTE(TIMEDIFF(t2、t1))= 0は、部屋が完全に予約されたことを意味します。

于 2012-04-25T17:13:33.353 に答える
1

おそらく、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 が言ったように、その日と部屋のデータを取得して、アプリケーション コードでこれを解決する方がおそらく簡単です。

于 2012-04-25T17:21:01.110 に答える