首页 > 解决方案 > SQL - 将 2 个表中的 2 个值相乘以显示新表的结果

问题描述

尝试在包含数量的一个表和包含价格的其他表之间进行乘法运算时,在 SQL 中显示特定结果时遇到问题。

我认为图像和代码将帮助您更好地理解我的问题。

附在此处的图片

所以我有 6 个客户订单(co_ID),在每个客户订单中,客户都购买了产品。我试图将每个产品的数量(来自客户订单详细信息表)乘以相关价格(来自产品表),然后最终显示一个包含客户订单 ID 和该订单总价的新表。

您可以看到我目前得到了不同的结果(在代码左侧的图像中)。

客户订单明细表:

+---------+--------+--------------+
| co_ID   | p_ID   | cod_quantity |
+---------+--------+--------------+
| 1000001 | 150009 |233           |
+---------+--------+--------------+
| 1000002 | 150001 | 400          |
+---------+--------+--------------+
| 1000002 | 150002 | 1000         |
+---------+--------+--------------+
| 1000002 | 150003 | 300          |
+---------+--------+--------------+
| 1000002 | 150004 | 600          |
+---------+--------+--------------+
| 1000002 | 150008 | 2000         |
+---------+--------+--------------+
| 1000003 | 150004 | 350          |
+---------+--------+--------------+
| 1000003 | 150005 | 500          |
+---------+--------+--------------+
| 1000003 | 150007 | 800          |
+---------+--------+--------------+
| 1000003 | 150008 | 1000         |
+---------+--------+--------------+
| 1000004 | 150001 | 450          |
+---------+--------+--------------+
| 1000004 | 150002 | 800          |
+---------+--------+--------------+
| 1000004 | 150005 | 700          |

客户订单表

╔═════════╦════════╦═════════════════════╗
║ co_ID   ║ c_ID   ║ co_date             ║
╠═════════╬════════╬═════════════════════╣
║ 1000001 ║ 200001 ║ 2020-07-19 12:35:28 ║
╠═════════╬════════╬═════════════════════╣
║ 1000002 ║ 200002 ║ 2020-07-19 14:53:14 ║
╠═════════╬════════╬═════════════════════╣
║ 1000003 ║ 200003 ║ 2020-07-19 09:12:40 ║

代码是:

SELECT factory.customer_order.co_ID, factory.customer_order_details.cod_quantity * factory.product.p_price
AS total_price
FROM factory.customer_order_details, factory.product, factory.customer_order
WHERE factory.customer_order_details.co_id = factory.customer_order.co_id;

我会很感激任何帮助,在这种情况下,我现在正试图解决这个问题。

仅供参考 - 我会将总价格保存为客户订单表中的一列(带有日期的右侧),但我需要将其标准化(BCNF),我认为它不会与价格标准化它。

标签: mysqlsql

解决方案


你需要一个加入条件customer_order_detailsproduct所以你乘以正确的产品价格。

要获得每个订单的总数,您需要使用SUM()聚合函数和GROUP BY

SELECT co.co_ID, SUM(cod.cod_quantity * p.p_price) AS total_price
FROM customer_order AS co
JOIN customer_order_details as cod ON cod.co_id = co.co_id
JOIN product AS p ON p.p_id = cod.p_id
GROUP BY co.co_ID

推荐阅读