MySQL根据另一个表的货币汇率划分价格

时间:2013-05-19 10:06:33

标签: mysql

我有2个表,订单和order_detail。

订单

        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

我需要将pricesorder_detail table的所有conversion_rate与订单表中的order_id划分为相应的 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 ,其中货币不是1且费率不是1 (基本上将所有订单转换为默认货币,1)。

所以期望的结果是:

ORDER_DETAIL

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; 

我做了一个查询:

{{1}}

我现在被困在这里因为它提供了有关未知列orders.conversion_rate的错误,尽管它就在那里。

请帮我完成此查询。

1 个答案:

答案 0 :(得分: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;