説明 私は、選択した期間(たとえば、午前9時から午前11時まで)の可変時間(10/15/20または30分)のタイムスロットを予約できる(複数の)アジェンダを使用してアジェンダシステムを作成しています。月曜日と午前10時30分から午後3時まで)
もちろん、PHPでこれを実行し、表示されているすべての日付で使用可能なすべてのタイムスロットの予定と可用性のテーブルをポーリングできますが、サーバーに少し負荷がかかるように聞こえます。そのため、タイムスロットと可用性のタプルを示すmySQL結果リレーションを生成する方法があるかどうか疑問に思いました。
データベース/テーブルのセットアップ これは私が必要だと思ったテーブルのセットアップです。
予定 holds the appointments already made
ID| intunique id
agenda_id | intunique id identifying the agenda
start | date_timestart of the appointment
end | date_timeend of the appointment
いくつかのより説明的なフィールド
可用性 when are there which time slots available
agenda_id| int identifying which agenda
day_of_the_week | int which day, eg 1=monday
start_time | 時間 e.g. 09:00:00
end_time| 時間e.g. 11:00:00
time_slot| inthow long are the time slots? e.g. 10minutes
(備考:
必要に応じて、time_slotsフィールドをハードコーディングすることもできます。
システムはMySQLデータベースで実行され、必要に応じてpostgresqlに切り替えることができます
)
望ましい結果
日付2013-02-21
とagenda_id 1
(および必要に応じてタイムスロット15
)と8:00から18:00までの営業日が与えられます。
mysqlクエリ、ビュー、またはストアドプロシージャを作成して、次のテーブル/リレーションを作成するにはどうすればよいですか。
date | 8:00 | 8:15 | 8:30 | 8:45 | 9:00 | 9:15 | ..... | 17:15 | 17:30 | 17:45 |
2013-02-21 | 0 | 0 | 0 | 0 | 1 | 2 | ..... | 2 | 2 | 1 |
ここで、
0=予約
不可1=利用可能、このタイムスロットを予約可能
2 =利用不可、予約が存在する