Получить расписание на текущий день или первый выход

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

Моя структура базы данных выглядит так:

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

0 ответов

Другие вопросы по тегам