【发布时间】:2020-10-31 02:37:49
【问题描述】:
我想显示他们订单的总成本,并显示他们购买的每件商品。当我按订单号排序时,总和(价格)就搞砸了。当我按客户名称排序时,它只显示一种产品。我如何显示他们购买的所有产品以及这些产品的总成本。 *每个订单都附有一件产品。具有唯一的订单号
这些是我创建的虚构表格,与我自己的非常相似。
Customer Table
+------+-------------+
| name | customer_id |
+------+-------------+
| Adam | 4 |
| Drew | 6 |
| Tom | 8 |
+------+-------------+
Order Table
+---------------+---------------+----------+--------------+
| purchase_date | delivery_date | order_id | customer_id |
+---------------+---------------+----------+--------------+
| 01/22/2020 | 02/23/2020 | 3 | 4|
| 01/12/2020 | 02/12/2020 | 5 | 4|
| 01/31/2020 | 02/22/2020 | 6 | 4|
| 01/05/2020 | 02/14/2020 | 11 | 8|
| 01/22/2020 | 02/23/2020 | 7 | 8|
| 01/12/2020 | 02/12/2020 | 8 | 6|
| 01/31/2020 | 02/22/2020 | 9 | 6|
| 01/05/2020 | 02/14/2020 | 10 | 6|
| 01/05/2020 | 02/14/2020 | 10 | 6|
+---------------+---------------+----------+--------------+
Product_order table
+-------+------------+----------+
| po_id | product_id | order_id |
+-------+------------+----------+
| 1 | 3 | 3|
| 2 | 13 | 5|
| 3 | 7 | 6|
| 4 | 8 | 11|
| 5 | 45 | 7|
| 6 | 9 | 8|
| 7 | 3 | 9|
| 8 | 45 | 10|
| 9 | 3 | 10|
+-------+------------+----------+
product table
+------------+------------+-------+
| product_id | product | Price |
+------------+------------+-------+
| 3 | Soda | 7.00 |
| 13 | Chips | 9.00 |
| 7 | GummyBears | 11.00 |
| 8 | IceCream | 3.00 |
| 9 | Pen | 2.00 |
| 45 | Gum | 1.00 |
+------------+------------+-------+
这是我尝试过的查询,但产生了以下结果。
select c.name, product, sum(p.price) as total_sale
from (Select distinct order_id, customer_id
from `order`) as o
inner join (select o.customer_id
from `order` o
group by o.customer_id) as a on o.customer_id = a.customer_id
inner join product_order po on o.order_id = po.order_id
inner join customer c on o.customer_id = c.customer_id
inner join products p on po.product_id = p.product_id
group by c.name
这是结果:
+----------+------------+-----------------+
| Name | product | total_purchased |
+----------+------------+-----------------+
| Adam | Soda | 27.00|
| Tom | IceCream | 4.00|
| Drew | Pen | 17.00|
+----------+------------+-----------------+
我想展示他们购买的所有产品。以及他们购买所有物品的总金额,就像这样。
+------+------------+-----------------+
| Name | product | total_purchased |
+------+------------+-----------------+
| Adam | Soda | 27.00|
| Adam | Chips | 27.00|
| Adam | GummyBears | 27.00|
| Tom | IceCream | 4.00|
| Tom | Gum | 4.00|
| Drew | Pen | 17.00|
| Drew | Soda | 17.00|
| Drew | Gum | 17.00|
| Drew | Soda | 17.00|
+------+------------+-----------------+
【问题讨论】:
-
能否也给我们完整的数据产生你的结果,你基本上必须在加入之前有底价然后删除分组。
-
@nbk 为了清楚起见,我添加了表格。
-
我不明白。亚当只有一份订单和一种产品(GummyBears)。他是如何在结果集中得到 3 种产品的?
-
@Ryan 真的不想挑剔,但是您在表格中列出的数据与您希望的结果集不匹配(即:产品
IceCream和Pen不存在于您的表中)。为了使它更容易,您可以在 db-fiddle.com 或 sql-fiddle.com 上模拟您的表(带有数据)和查询,以便我们有一个您所看到的工作示例?在其中一个站点上模拟您的数据将使其他人更容易帮助您获得问题的答案。这是一个如何模拟它的示例db-fiddle.com/f/wbNZfuvnVEeT5ceQ9QZrYK/0 -
@GharbadTheWeak 我在表格中添加了更多数据。
标签: mysql