1

我有 2 个表,orders 和 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

订单详情

        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

我需要将所有订单prices与来自订单表的所有内容除以货币不是1且汇率不是1的对应表order_detail table(基本上将所有订单转换为默认货币,1)。conversion_rateorder_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

我做了一个查询:

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; 

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

请帮我完成这个查询。

4

1 回答 1

2

您在查询中缺少关联两个表,因此您无法从订单表中获取数据。我LEFT JOIN在我的 INNER 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; 
于 2013-05-19T10:14:24.690 回答