Я создаю приложение для планирования, в котором я назначаю расписания определенным участникам, но эти расписания могут измениться к определенной дате или быть назначены на будущее.
Моя структура базы данных выглядит так:
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
значение может быть нулевым, что означает, что у расписания нет времени завершения.
Я запрашиваю членовтаблицы, и присоедините назначенные таблицы по элементу members.member_id = assign_schedules.member_id, и присоединитесь к таблице расписаний по адресу asiggned_schedules.schedule_id = schedule.schedule_id