目前在一个项目里面,遇到了一点小问题。
在两个数据基本信息表中, 字段类似, 字段中还包括,开始时间,结束时间,单价!其中开始时间是主键之一,当然主键还有比如产品ID等。现在的要求是:     根据开始时间和结束时间,用B表的信息来更新A表的信息。操作纪录的方式,只有更新和插入,不能有删除操作。详细的解释是,如果,A表和B表的时间段内有交集的话,则根据B表的信息(开始时间,结束时间)将A表的纪录,或者更新(note:开始时间是主键),或者插入。最终要保证,在A表中,都已经被更新为相同时间段的B表信息,并且,相关联到的B表信息也都被插入到A表中。类似如下:
pattern 1:
Table A:               -----------------
Table B:                    _________________action:
     1,  update        -----                   (因为,开始时间是主键,所以,更新结束时间)
     2,  insert             ____________
     3,  insert                         _____  (插入B表纪录的信息)
 当然,,类似的还有很多pattern。 比如:Table A:        ------------------------
Table B:           ----     当然,因为数据库中的数据不是一条,因为,需要处理的时候需要循环。
而且,  很多情况下会出现如下情况:Table A:        ------------------------
Table B:           ----   ------  
或者    
Table A:        ------------------------
Table B:           ----    -------   -----现在情况下,我使用 Table B的纪录集进行循环。请教如何处理, 谢谢!

解决方案 »

  1.   

    上面我写的action:  应该改成  result :
      

  2.   

    1:    
       既然是两个表进行更新,则一定有一个主键是相同的,比如产品ID,或者操作ID,我按照正常人的思维能力,觉得,这些不用介绍!2: 这个问题,其实也很容易解决,只不过现在没有找到更好的方法而已,想在这里找些比较成熟的思想改造一下。  目前我的做法是 按照9种不同的情况进行处理。 因为有些细节问题不是很好描述,所以,我省略了若干。3: 在这里,我并不是寻找详细的解决方法,只是为了寻找一个合适的思路。现在这部分程序大概是1500行左右,我希望可以精简到1000行。当然,其中有很多私有方法,我在题目里面并没有涉及4: 我觉得CSDNer里面,大部分人的思维能力都可以,不用说很多大家都默认的东西,谁知????  哎!! 心痛啊!
      

  3.   

    没见过这种需求设计,不过看样子应该可以直接通过sql语句搞定,不用java操心了
      

  4.   

    大部分涉及到数据库操作的代码都可以用SQl来实现,只不过,看实现的复杂程度而已。而且,大多数时候为了代码的可读性,写在执行代码中还是要比写在SQL中清晰很多。谢谢以上各位, 现在我已经有了比较详细的设计,循环的内部进行递归,已经可以更新全部的纪录了。谢谢谢谢!
    包括各位“表达能力和思维能力“都剧牛的人。 btw:原始的文档太长,加上我的表达能力有限,造成各位心里不快,在此,致歉!
      

  5.   

    没见过这种需求设计,不过看样子应该可以直接通过sql语句搞定
      

  6.   

    不能直接用 SQL 来实现。虽然可以用SQL实现,但是会非常麻烦, 因为,在更新的过程中,还需要引用其他的数据,并且根据这些数据,对分割更新后的数据进行进一步的处理。。在前面的描述里面,只是简单的一个处理的流程而已, 具体实现中因为还要牵扯到其他的很多判断条件,所以必须用程序来实现。各位,SQL高手,别再费心了谢谢!