我正在开发一个日程表构建应用程序,它允许用户在日程表内的一天中添加活动。
我有一个包含标题数据的日程表:
计划名称、计划的天数长度、id
以及保存活动id、日程id和日偏移量的活动表。
日期偏移量是指计划的第n天。我不需要存储特定的日期-这些日期是稍后在将日程添加到某人的日历时添加的。
在一个日程表中,没有必要在所有的日子里都有一个活动,或者实际上是其中的任何一个。
问题是-我希望能够从日程表中删除天数(并为此插入n天)。
对于删除,用户可以突出显示他们正在编辑的日程表中的多天。
因此,在选择delete时,我将有一个要从activities表中删除的日期偏移量数组。这一点很微不足道。
我的问题是-如果我从日程表中删除了第5天,第6天变成了新的第5天;第7天变成了新的第6天,等等,所以我需要更新表中所有受影响的活动记录。
我能想到的唯一方法是按升序排列要删除的天数,依次删除每个天数,然后搜索并递减所有dayoffset值大于已删除偏移量的记录。然后针对要删除的每一天重新运行此查询。
这感觉效率很低,但我想不出比这更好的了。有什么想法吗?
发布于 2013-10-24 23:27:41
UPDATE `schedule` SET `day` = `day` - number_of_deleted_days WHERE `day` > first_day_deleted;顺序实际上并不依赖于,您可以对其进行优化以处理连续的范围,但据我所知,没有什么比这更好的了
https://stackoverflow.com/questions/19570077
复制相似问题