我有一个医生时间表页面,医生可以配置他/她的工作时间(开始时间和结束时间)从星期一到星期五。
通过使用访问页面,用户只能在医生每天预定的时间内安排他们的预约。
我使用访问表用于用户约会,使用physician_schedules表来配置医生的工作时间。
访问表条目
id visit_date scheduled_intime scheduled_outtime physician_id
1 2012-04-23 09:15:00 09:30:00 1
2 2012-04-23 09:31:00 10:00:00 1
3 2012-04-24 10:00:00 10:15:00 1
4 2012-04-25 11:00:00 11:15:00 1
5 2012-04-26 15:15:00 15:30:00 1
6 2012-04-27 16:00:00 16:30:00 1
physician_schedules表条目
id start_time end_time day_of_week physician_id
1 09:00:00 18:00:00 monday 1
2 10:00:00 18:00:00 tuesday 1
3 11:00:00 17:00:00 wednesday 1
4 15:00:00 18:00:00 thursday 1
5 16:00:00 20:00:00 friday 1
注意事项每个医生应该每天只有一个条目(总共5个条目)。
问题当医生改变他/她的时间表时,我想找出在那一天超过医生时间表的所有现有的就诊情况。
示例
( 1)如果医生改变周三的工作时间,我想找到id 4
start_time: 12:00:00
end_time: 17:00:00
2)如果医生随工作时间的变化,我想找到id 4,5
星期三:
start_time: 12:00:00
end_time: 17:00:00
星期四
start_time: 15:30:00
end_time: 18:00:00
发布于 2012-04-23 16:51:03
SELECT visits.id FROM visits INNER JOIN physician_schedules
ON visits.physician_id = physician_schedules.id
WHERE
UPPER(day_of_week) = UPPER(DAYNAME(visit_date))
AND (scheduled_intime < start_time OR scheduled_outtime > end_time)
这将返回所有医生所有安排不良访问的所有ids。增加一个额外的地方,以获得他们只是一个特定的医生。
https://stackoverflow.com/questions/10283605
复制相似问题