有一个主表周计划: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.   

    子表的日期错了,跟主表的日期对应不上了。
    现在要根据主表的fromdate来更新,主表的fromdate是周一的日期。
    子表就是从周一到周日7个日期,对应7条记录。
    例如主表是 2010-09-20
    那么子表就是
    1 2010-09-20
     1 2010-09-21
    .。。
     1 2010-09-26
      

  2.   


    --你需求不是很清楚,删除你字表对应的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
      

  3.   


    如果是这样的 这位兄弟的就可以 更新的时候加个rowid