mysql - 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),我认为它不会与价格标准化它。
解决方案
你需要一个加入条件customer_order_details
,product
所以你乘以正确的产品价格。
要获得每个订单的总数,您需要使用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
推荐阅读
- python - 实现Asyncio通过socket同时发送多个文件
- ios - 仅警告一次:UITableView 被告知布局其可见单元格和其他内容而不在视图层次结构中?
- html - 在移动视图的表格行中换行长文本
- android - 如何使用谷歌登录制作apk?
- python - 如何将 UTC 日期时间转换为输出格式中的 T 和 Z?
- python - Python 将布尔变量输出到文件(读取、检查、写入)
- botframework - 瀑布步骤中的建议操作
- selenium - selenide.open 尝试抛出 NoSuchMethodError
- json - 尝试解码 json 时出错:simplejson.errors.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)
- apache-kafka - 有没有办法为每个 kafka 主题获取所有制作人的 ip?