0

我有一个正在开发的日程安排应用程序,它允许用户将活动添加到日程表中的一天。

我有一个包含标题数据的时间表:

时间表名称、时间表长度(以天为单位)、id

以及一个包含活动 ID、日程 ID 和日期偏移量的活动表。

日期偏移量是指日程表的“第 n”天。我不需要存储特定的日期 - 这些是稍后添加到某人的日历中时添加的。

日程表中的所有天都不一定有活动,或者实际上其中任何天都有活动。

问题是 - 我希望能够从计划中删除天数(并为此插入 n 天)。

对于删除,用户可以在他们正在编辑的计划中突出显示多天。

因此,在选择删除时,我将从活动表中删除一组日期偏移量。那一点是微不足道的。

我的问题是 - 如果我从日程表中删除第 5 天,例如,第 6 天将成为新的第 5 天;第 7 天,新的第 6 天等,所以我需要更新表中所有受影响的活动记录。

我能想到的唯一方法是按升序排列要删除的日期,依次删除每一天,然后搜索并递减所有 dayoffset 值高于已删除偏移量的记录。然后为要删除的每一天重新运行此查询。

感觉效率很低,但我想不出更好的办法。有任何想法吗?

4

1 回答 1

0
UPDATE `schedule` SET `day` = `day` - number_of_deleted_days WHERE `day` > first_day_deleted;

顺序并不真正依赖,您可以对其进行优化以使用连续范围,但据我所知,没有比这更好的了

于 2013-10-24T15:27:40.883 回答