两个日期之间的Mysql来自其他领域

时间:2015-03-03 09:50:08

标签: mysql

我的第一张桌子上有所有文章的价格演变,第一个日期定义了更改价格的日期..'' 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 );

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,且未标记为betweentabledata

发布样本数据和结果非常棒 - 这确实很有帮助。但有时它也有助于你的表结构。你真的应该自己尝试一个解决方案并发布它,以便我们为你纠正它。