我有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
我需要将prices
中order_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的错误,尽管它就在那里。
请帮我完成此查询。
答案 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;