我正在开发一个计划构建应用程序,允许用户在计划中的某一天添加活动。
我有一个包含标题数据的计划表:
安排名称,日程安排的长度,天数
和一个活动表,其中包含活动ID,计划ID和日期偏移。
日偏移是指日程表的第'n天。我不需要存储特定日期 - 稍后在将某个日程安排添加到某人的日历时会添加这些日期。
计划中的所有日期或其中任何日期都不一定有活动。
问题是 - 我希望能够从计划中删除天数(并且也为此插入n天)。
要删除,用户可以在他们正在编辑的计划中突出显示多天。
因此,在选择删除时,我将从活动表中删除一组日期偏移。这一点很简单。
我的问题是 - 如果我从日程表中删除第5天,那么第6天就会成为新的第5天;第7天新的一天6等等所以我需要更新表中所有受影响的活动记录。
我能想到这样做的唯一方法是按升序排序要删除的天数,然后删除每一天,然后搜索并减少dayoffset值高于删除的偏移量的所有记录。然后针对要删除的每一天重新运行此查询。
感觉非常低效,但我想不出更好的事情。有什么想法吗?
答案 0 :(得分:0)
UPDATE `schedule` SET `day` = `day` - number_of_deleted_days WHERE `day` > first_day_deleted;
订单并不真正依赖,您可以优化它以使用连续范围,但据我所知,实际上并没有更好的