2

誰かがこれで私を助けてくれませんか! 私は2つのテーブルを持っています:

1.カスタムの日付依存の価格ウィンドウを含む既存の価格表:

  id | prod id |   start    |    stop    |   price  
-----+---------+------------+------------+-----------
   1 |   65210 | 2012-01-01 | 2013-01-01 |  5.00     
   2 |   54841 | 2012-02-05 | 2013-03-01 | 15.00     
   3 |   51518 | 2012-01-01 | 2013-01-01 |  5.00     
   4 |    8402 | 2012-01-01 | 2017-01-01 |  5.00     
   5 |    1520 | 2012-01-01 | 2050-01-01 | 12.00     
   6 |     959 | 2013-10-01 | 2018-01-01 |  5.00  

2.「新しい」価格データ テーブル (上記のテーブルを一意に更新するために使用prod id):

 prod id |   start    |    stop    |   price   
  -------+------------+------------+-----------
   65210 | 2013-01-01 | 2025-01-01 |  5.00     
   54841 | 2013-02-05 | 2017-03-01 | 15.00     
     959 | 2013-01-01 | 2017-01-01 |  5.00    

まだ「ウィンドウ内」にあると仮定してstop、テーブル 1 の日付をテーブル 2 の日付で更新する最良の方法は何ですか? stop既存のstop日付が「新しい」start日付より前である場合、新しい価格設定レコードが新しい日付で作成されstartますstop

ありがとう!

4

1 に答える 1

0

...stopテーブル 1 のstop日付をテーブル 2 の日付で更新するには、まだ「ウィンドウ内」にあると仮定します...

UPDATE price p JOIN new_price n
    ON p.prod_id = n.prod_id
   AND n.start BETWEEN p.start AND p.stop
   SET p.stop = n.stop

新しいレコードを挿入するには「...既存のstop日付が新しい日付より前の場合start...」

INSERT INTO price (`prod_id`, `start`, `stop`, `price`)
SELECT n.prod_id, n.start, n.stop, n.price
  FROM new_price n JOIN price p
    ON n.prod_id = p.prod_id
   AND n.start > p.stop

これがSQLFiddleのデモです

于 2013-06-30T05:52:31.597 に答える