有人可以帮我这个!我有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
使用表2中的stop
日期更新表1中stop
日期的最佳方法是假设它仍在“窗口中”?如果现有stop
日期在“新”start
日期之前,则会使用新的start
和stop
日期创建新的定价记录。
谢谢!
答案 0 :(得分:0)
...使用表2中的stop
日期更新表1中的stop
日期,假设它仍在“窗口中”...
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 演示