2013-05-19 49 views
1

我有2個表,訂單和order_detail。MySQL按另一個表的貨幣價格劃分價格

訂單

 id_order | currency | conversion_rate 
-------------------------------------------- 
     1    1    1 
     2    1    1 
     3    7    8.523856 
     4    1    1 
     5    1    1 
     6    7    8.457893 
     7    1    1 

ORDER_DETAIL

 id_order | id_order_detail | price 
-------------------------------------------- 
     1    1    100 
     1    2    150 
     2    3    150 
     3    4    2500 
     3    5    2100 
     4    6    160 
     5    7    190 
     6    8    2300 
     6    9    1500 
     7    10    125 

我需要所有的pricesconversion_rate從訂單表鴻溝order_detail table與相應order_id當貨幣不是1費率不是1(基本上將所有訂單轉換爲默認貨幣,1)。

所以期望的結果將是:

ORDER_DETAIL

 id_order | id_order_detail | price 
-------------------------------------------- 
     1    1    100 
     1    2    150 
     2    3    150 
     3    4    293.29449 
     3    5    246.367371 
     4    6    160 
     5    7    190 
     6    8    271.93533 
     6    9    177.349134 
     7    10    125 

我做了一個查詢:

UPDATE order_detail 
SET price = price/orders.conversion_rate 
WHERE orders.id_order = order_detail.id_order 
     AND orders.conversion_rate != 1 
     AND orders.currency != 1; 

我現在被困在這兒了,因爲它提供了關於未知列訂單錯誤.conversion_rate,雖然它在那裏。

請幫我完成此查詢。

+0

您可以編寫一個SELECT來返回所需的結果嗎? – Strawberry

回答

2

您缺少關聯您的查詢中的兩個表,因此您無法從訂單表中獲取數據。我在我的INNER JOIN查詢中使用了LEFT JOIN來更新您的orders_detail表

UPDATE order_detail a 
LEFT JOIN orders b 
ON a.id_order = b.id_order 
SET a.price = a.price/b.conversion_rate 
WHERE a.id_order = b.id_order AND b.conversion_rate != 1 AND b.currency != 1; 
+0

外部連接看起來沒有必要,關於不等於1 – Strawberry

+0

的部分是不是內部連接? –

+0

太棒了!完美的作品!非常感謝你,省下了幾個小時的手工工夫! – popkutt

相關問題