Получить расписание на текущий день или первый выход
Я создаю приложение для планирования, в котором я назначаю расписания определенным участникам, но эти расписания могут измениться к определенной дате или быть назначены на будущее.
Моя структура базы данных выглядит так:
members table:
------------------------------------
member_id
schedule table:
------------------------------------
schedule_id
schedule_name
assigned_schedules asch table:
------------------------------------
member_id
schedule_id
effective_from
effective_to
assigned_to
а также assigned_from
значения являются меткой времени Unix. В настоящее время я присоединился к таблицам, но мое предложение where довольно избыточно и содержит ошибки. Я рассчитываю получить расписание, назначенное на текущий день участника, или ближайшее назначенное расписание, если оно назначено в будущем. Участнику может быть назначено расписание на будущую дату, и оно будет меняться в это время, но я ищу ежедневное представление.
В настоящее время я объединяю все таблицы и получаю предложение where (где ?
текущая метка времени):
( asch.effective_from <= ? AND ( asch.effective_to IS NULL OR asch.effective_to >= ? ) OR asch.effective_from IS NULL )
XOR
( ( asch.effective_from > ? AND asch.effective_to IS NULL ) XOR asch.effective_from > ? )
assigned_to
значение может быть нулевым, что означает, что расписание не имеет времени завершения.
Я запрашиваю таблицу участников и присоединяюсь к параметру assign_schedules для members.member_id = assign_schedules.member_id и присоединяюсь к таблице расписаний asiggned_schedules.schedule_id = schedule.schedule_id