在出入庫時有兩種記錄:入庫和出庫.
入庫有  :起號~迄號
出庫也有:起號~迄號.
現需要對入庫和出庫的票據進行合併,即在入庫紀錄中去除出庫的記錄.
有如下情況:
狀況一:
     合併前:
            日 期    起 號    迄 號
     入     11/1        1       10
     入     11/2       11       15
     入     11/3       16       20
     合併後:
         起 號    迄 號    張 數
           1       10       10
          11       15        5
          16       20        5
狀況二:
    合併前:
           日 期    起 號    迄 號
    入     11/1        1       10
    入     11/2       11       15
    入     11/3       16       20
    出     11/4        1       10
    合併後:
          起 號    迄 號    張 數
           11       15        5
           16       20        5
狀況三:
    合併前:
           日 期    起 號    迄 號
    入     11/1        1       10
    入     11/2       11       15
    入     11/3       16       20
    出     11/4        8       13
   合併後:
           起 號    迄 號    張 數
             1        7        7
            14       15        2
            16       20        5
狀況四:
    合併前:
            日 期    起 號    迄 號
     入     11/1        1       10
     入     11/2       11       15
     入     11/3       16       20
     出     11/4        8       17
    合併後:
            起 號    迄 號    張 數
              1        7        7
             18       20        3
狀況五:
           日 期    起 號    迄 號
     入     11/1        1       10
     入     11/2       11       15
     入     11/3       16       20
     出     11/4        8        9
合併後:
           起 號    迄 號    張 數
             1        7        7
            10       10        1
            18       20        3
            11       15        5
            16       20        5
等等.請提供一算法實現,謝謝!

解决方案 »

  1.   

    能改表结构吗?日期 号
    入 11/1 1
    入 11/1 2
    入 11/1 3
    ....
    入 11/1 10
    出 11/2 1
    出 11/2 2
    ....表面上看,这增大了数据量,但是插入,更新,还有合并时候的查询,其业务逻辑都是最简单,同时也是最符合实际情况的。我估计你们只是最后合并后的那张类似报表的东西里面需要起迄号,而前面那张流水账的表,并不是必须的(即使UI上用户输入的是起迄号,insert/update也只是个循环)否则你们的设计虽然能大量节约数据量,但是却可能导致超大量的计算问题,实际性价比应该更低
    比如
    入 11/1 1 10
    出 11/2 10 10
    入 11/2 11 15
    出 11/3 4 5
    出 11/4 1 1
    出 11/5 12 13
    出 11/6 2 3
    ......而且,即使能想出算法来,万一业务逻辑稍有变更,可能又要推翻。你现有表结构的算法正在思考中...
      

  2.   

    嗨!shine333(enihs)謝謝.
    偶不知到您所想改表结构會是什麼樣的.
    其實在這個問題中,它是不對數據庫中表做insert 或 update,
    該用例只是把數據庫中表查詢出來做上述的操作顯示給用戶.
    是當月的第一天到當日查詢的記錄.
      

  3.   

    对阿,我当然知道你要什么!我是说,你们要select from的那张表的结构,很难出来你们要的结果。所以,我建议的解决这个问题的方法,不仅仅是如何select,而是那张from的表的结构“最好”不要是现在的样子(如果你们能改的话)。BTW,mind if not using TC?
    虽然看得懂,但是实在不能像SC那样引起我脑细胞的“共鸣”,看得实在吃力:)
      

  4.   

    hi~shine333.很無奈.我們是沒有權限去更改表結構的.但是我想知道你要改動的樣子.
      

  5.   

    回复人:shine333(enihs) ( ) 信誉:125 2007-01-04 10:13:34 得分:0
    能改表结构吗?日期 号
    入 11/1 1
    入 11/1 2
    入 11/1 3
    ....
    入 11/1 10
    出 11/2 1
    出 11/2 2
    ....========================
    就是把原来1-10放到1条记录,变成10条记录。想了半天,你们原来的做法,只能写存储过程
      

  6.   

    謝謝!
    其實象您這樣更改表的結構,偶感到也會加大數據庫操作的負擔,
    如願來需要insert 一筆,現在需要insert 10筆,當然,具體的情景需要做出衡量.
    存儲過程是不允許用的了,只能在ap程式中實現.
    是否有甚麼數學方法的東東能提供一個好的解決方案?