MySQL 将价格除以另一个表中的货币汇率

标签 mysql

我有 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

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

我需要将 order_detail 表 中的所有 prices 与来自 orders 表的 conversion_rate 以及相应的 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; 

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

请帮我完成这个查询。

最佳答案

您在查询中缺少关联两个表,因此您无法从订单表中获取数据。我在 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; 

关于MySQL 将价格除以另一个表中的货币汇率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633486/

相关文章:

mysql - 无需查询表即可计算给定日期范围内星期日的出现次数

mysql - Xampp MySQL 拒绝连接

PHP:基于 2 列将 mysql 数据库导出为 CSV?

php - 来自数据库的自动完成表单 PHP MYSQL AJAX

INSERT FROM SELECT 之后使用 keycache 修复 MySQL

mysql - 关闭 Perl MySQL 插入语句中的警告?

php - 是否可以从 SQL Server 创建文本格式的列表,然后由 PHP Cron 作业处理?

php - 将文本区域保存到数据库并发送电子邮件,保持文本区域格式

php - mysql插入数据时数组使用和bindParam使用有什么区别?

php - MySQL 查询 : alternatives for INFORMATION_SCHEMA. 表