描述 我正在制作一个带有(多个)议程的议程系统,您可以在其中预订一个可变时间段(10/15/20 或 30 分钟)在选定的时间段内(例如上午 9:00 到上午 11:00)周一和上午 10:30 至下午 3:00)
当然,我可以在 PHP 中执行此操作,并轮询约会和可用性表,以便为每个显示的每个日期提供可用的时间段,但有些听起来有点服务器密集型。所以我想知道是否有一种方法可以生成一个显示时隙和可用性元组的 mySQL 结果关系......
数据库/表设置 这是我认为必要的表设置。
约会 holds the appointments already made
ID | 整数unique id
议程_id | 诠释unique id identifying the agenda
开始 | 日期时间start of the appointment
结束 | date_timeend of the appointment
一些更具描述性的字段
可用性 when are there which time slots available
议程_id | int identifying which agenda
day_of_the_week | 整数which day, eg 1=monday
开始时间 | 结束时间 e.g. 09:00:00
| 时间e.g. 11:00:00
time_slot | 整数how long are the time slots? e.g. 10minutes
(备注:
如果需要time_slots字段也可以硬编码;
系统运行在MySQL数据库上,如果需要我们可以切换到postgresql
)
期望的结果
给定一个日期2013-02-21
和一个议程 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 = 不可预订,已预约