2015-03-03 141 views
0

我有我的第一臺價格爲所有文章與定義日期,變革的價格第一次約會的演變兩個日期之間..「」 evolution_price'Mysql的其他領域

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日期/價格價格必須介於(日期1至日期2)價格和(2日至3日)價格之間。等等。
第二臺所需的'訂單 '':

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

從Turophile的答案是我搜索...我現在搜索如何直接更新第二張表更新和設置 – Didou70 2015-03-05 09:25:59

回答

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

你發佈樣本數據和結果真的很棒 - 這真的很有幫助。但有時它也有助於建立你的表格結構。你真的應該自己嘗試一個解決方案,併發布它,所以我們可以爲你糾正它。

+0

是的感謝...太簡單了...但對於新手...這是真的...可以我從這個結果(new_unit_price)直接更新到old_unit_price ..很好的答案...我已經從我的服務器結果1'000'000訂單和20'000價格有點反應時間 – Didou70 2015-03-05 09:16:02