PHP / MySQL SELECT
会議室の特定の日の利用可能な時間のテーブルがあります。Temp_Resは、予約が進行中のときにタイムスタンプを取得します(これらの行をロックするため)。予約する会議が2時間の場合、可能な限りの時間枠を取得したいと思います。
日時間Temp_Res228
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 .... etc
SELECTでこれを実行できるようにするには(可能な場合)、テーブル内の他の行を確認する方法が必要です。特定の行を含めるかどうかを決定します。
1.他の行を調べて、WHERE(または同様の)を使用したSELECTでこれを行うことは可能ですか?
2.可能であれば、私を正しい方向に導いていただけませんか。
3.他の解決策/アイデア(以下のものを除く)も非常に高く評価されています!
それ以外の場合は、次の方法で解決する必要があります。a)
追加のタイムスロットテーブルを作成する
b)その特定の行の最大タイムスロットを示す追加の列を作成する。以下を参照してください。
日時間スロットTemp_Res228
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