我正在构建一个计划应用程序,我将计划分配给某些成员,但这些计划可以在特定日期更改或分配给将来。
我的数据库结构如下:
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
值可以为null,这意味着计划没有终止时间。
我查询成员表,并在members.member_id = assigned_schedules.member_id上加入assigned_schedules,并在asiggned_schedules.schedule_id = schedule.schedule_id上加入日程表