【发布时间】:2020-07-28 07:53:08
【问题描述】:
当我尝试在包含数量的一个表和包含价格的其他表之间进行乘法运算时,我无法在 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),我认为它不会被标准化里面的价格。
【问题讨论】:
-
嗨,现在好些了吗?
-
没有。我再次向您推荐我之前的评论。链接的答案非常具体。
-
您需要
factory.product的加入条件。否则,您将为每个产品生成一行,而不仅仅是订单中的产品。 -
如果你学会使用 ANSI JOIN 语法,你就不会犯这个错误。