Mysql SQL-将两个表中的2个值相乘,以显示一个新表,并显示结果
在试图在一个包含数量的表和其他包含价格的表之间进行乘法时,我遇到了一个问题,即在SQL中显示特定结果 我认为图片和代码将帮助您更好地理解我的问题 因此,我有6个客户订单(co_ID),在每个客户订单中,客户都购买了产品。 我试图将每个产品的数量(从客户订单明细表)乘以相关价格(从产品表), 然后最终显示一个新表,该表由客户订单ID和该订单的总价组成 您可以看到,我目前得到了一个不同的结果(在代码左侧的图像中) 客户订单明细表:Mysql SQL-将两个表中的2个值相乘,以显示一个新表,并显示结果,mysql,sql,Mysql,Sql,在试图在一个包含数量的表和其他包含价格的表之间进行乘法时,我遇到了一个问题,即在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 |
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;
客户订单表
╔═════════╦════════╦═════════════════════╗
║ 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 ║
代码是:
+---------+--------+--------------+
| 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 |
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)我认为它不会与其中的价格标准化。您需要在
客户订单详细信息
和产品
之间加入一个连接条件,因此您需要乘以正确的产品价格
要获得每个订单的总额,您需要使用SUM()
聚合函数和分组依据
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
嗨,现在好点了吗?没有。我再次向你推荐我之前的评论。链接的答案非常具体。您需要
工厂.product
的连接条件。否则,您将为每个产品生成一行,而不仅仅是订单中的产品。如果您学习使用ANSI连接语法,就不会犯此错误。非常感谢Barmar,我需要更多地练习连接语法。我尝试实现您编写的内容,但收到一个错误代码1054:“字段列表”中的未知列factory.customer\u order.co\u ID,即使它已定义且我没有输入错误。您知道这是什么原因吗?如果您在FROM
或JOIN
子句中为表分配别名,则不能在选择
列表中使用完整的表名。你必须写co.co\u ID
,而不是factory.customer\u order.co\u ID
。谢谢你,巴玛,你在这里帮了我很多忙!!!祝你今天愉快,我的朋友friend@RonSwanson . . . 如果这回答了你的问题,你应该接受答案。