我的第一张桌子上有所有文章的价格演变,第一个日期定义了更改价格的日期..'' evolution_price''
article -- date ----- unit.price
1 --- 2012-01-01 -- 1.20
1 --- 2013-01-01 -- 1.10
1 --- 2014-01-01 -- 1.20
2 --- 2012-01-01 -- 1.40
2 --- 2013-01-01 -- 1.50
2 --- 2014-01-01 -- 1.20
在我的第二个表上,了解订单历史记录(忘记单价0.00)''订单''
article-- date---- price unit --- total order
1 ----- 2012-02-03 -- 0.00 -------- 12.10
2 ----- 2012-02-05 -- 0.00 -------- 15.20
1 ----- 2013-01-01 -- 0.00 -------- xxx
1 ----- 2014-05-05 -- 0.00
1 ----- 2014-05-06 -- 0.00
我正在寻找在第二张桌子上包含正确的单价但在两个正确日期之间的价格..价格的演变可以是20日期/价格,价格必须介于(date1至date2)价格和(2日期至3date)价格等...; 第二个表格需要''订单':
1 ----- 2012-02-03 -- 1.20 ----- 12.10
2 ----- 2012-02-05 -- 1.20 ----- 15.20
1 ----- 2013-01-01 -- 1.10 ----- xxx
我测试了这个
update orders
set orders.unit_price =
(
select
unit_price
from evolution_price
where
orders.article_id = evolution_price.article_id
and
orders.order_date >= evolution_price.change_date
order
by evolution_price.change_date desc limit 1
);
答案 0 :(得分:0)
欢迎使用StackOverflow!
我想你想要这样的东西:
select
article_id ,
order_date ,
unit_price as old_unit_price,
order_total,
(select unit_price
from evolution as e
where o.article_id = e.article_id
and change_date <= order_date
order by change_date desc
limit 1 ) as new_unit_price
from orders as o
这里有一个小提琴:http://sqlfiddle.com/#!2/414e8/3
请注意,您的问题应标记为sql
,且未标记为between
,table
或data
。
发布样本数据和结果非常棒 - 这确实很有帮助。但有时它也有助于你的表结构。你真的应该自己尝试一个解决方案并发布它,以便我们为你纠正它。