有一个主表周计划:id fromdate todate
1 2010-09-20 2010-09-26
fromdate是周一,todate是周日子表 周计划子表:一条主表记录对应7条子表记录
fk_id plandate
1 2010-09-20
1 2010-09-21
.。。
1 2010-09-26
fk_id是主表id,作为子表外键,plandate是具体周计划对应的日期,现在的情况是:子表中的日期有误,需要根据主表的id和fromdate更新子表的日期,
请问,用oracle如何操作。
请不要说子表不应该这么设计,表结构是已经存在的。
1 2010-09-20 2010-09-26
fromdate是周一,todate是周日子表 周计划子表:一条主表记录对应7条子表记录
fk_id plandate
1 2010-09-20
1 2010-09-21
.。。
1 2010-09-26
fk_id是主表id,作为子表外键,plandate是具体周计划对应的日期,现在的情况是:子表中的日期有误,需要根据主表的id和fromdate更新子表的日期,
请问,用oracle如何操作。
请不要说子表不应该这么设计,表结构是已经存在的。
现在要根据主表的fromdate来更新,主表的fromdate是周一的日期。
子表就是从周一到周日7个日期,对应7条记录。
例如主表是 2010-09-20
那么子表就是
1 2010-09-20
1 2010-09-21
.。。
1 2010-09-26
--你需求不是很清楚,删除你字表对应的ID所有记录,重新写嘛
WITH a AS(
SELECT 1 id,To_Date('2010-09-20','yyyy-mm-dd') fromdate,To_Date('2010-09-26','yyyy-mm-dd') todate FROM dual)
SELECT id fk_id,To_Char(fromdate+LEVEL-1,'yyyy-mm-dd') plandate FROM a
CONNECT BY LEVEL<= todate-fromdate+1结果:
FK_ID PLANDATE
---------------------
1 2010-09-20
1 2010-09-21
1 2010-09-22
1 2010-09-23
1 2010-09-24
1 2010-09-25
1 2010-09-26
如果是这样的 这位兄弟的就可以 更新的时候加个rowid