2012-04-23 2 views
0

У меня есть страница расписания врача, и врач может настроить свое рабочее время (время начала и окончания) с понедельника по пятницу.mysql- выберите записи, превышающие определенный временной интервал

С помощью страницы посещений пользователи могут планировать свои встречи только в назначенное время врача в соответствии с каждым днем.

Я использую таблицу посещений для встреч пользователей и таблицы 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) Я хочу найти посещения идентификатор 4 если изменение врач рабочего времени на среду согласно

start_time: 12:00:00 
end_time: 17:00:00 

2) Я хочу найти посещена идентификатор 4,5 если врач изменил после рабочего времени

среда:

start_time: 12:00:00 
end_time: 17:00:00 

четвергу

start_time: 15:30:00 
end_time: 18:00:00 

ответ

0
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) 

Это возвращает все идентификаторы для всех плохо запланированных визитов для всех врачей. Добавьте дополнительный ГДЕ, чтобы получить их только для конкретного врача.

+0

Спасибо, человек, вы спасли мое время. Один из изменений, которым необходимо добавить ключевое слово «BINARY», прежде чем сравнивать две строки, иначе mysql возвращает ошибки при выполнении запроса ** Недопустимое сочетание сортировок (latin1_general_cs, IMPLICIT) и (latin1_general_ci, IMPLICIT) для операции '=' ** –

Смежные вопросы