MYSQL INNER JOIN 和 GROUP BY

我有一个产品表,其中包含产品详细信息,如名称、价格、img 等,以及一个记录订单的订单表。在订单表上,我存储了产品中唯一的 product_id,我想对结果进行分组。例如在我的产品表中,我有


product_id, product_name, product_price

1           apple         10

2           juice         5

3           pineapple     7.5

例如,对于我的订单表,我有


order_id, product_id, quantity, date

1         1           3         20.02.2020

2         3           2         22.12.2019

3         3           4         12.12.2020

4         1           2         12.02.2020

我想按产品名称和数量对我的 ORDERS 表进行分组例如


product_name, quantity, price

apple         5         50

pineapple     6         45

这是我的查询


SELECT 

products.product_id, 

products.product_name,

products.product_price AS price,

orders.quantity AS col,

orders.by_date,

(SELECT SUM(price * col)) AS total

FROM products

INNER JOIN orders ON products.product_id = orders.product_id

GROUP BY products.product_id,   

     products.product_name,

     orders.order_id

结果也不例外


我不确定我做错了什么。我需要做一个子查询吗?


烙印99
浏览 163回答 3
3回答

湖上湖

SELECT   p.product_name,  SUM(o.quantity) AS quantity,  SUM(o.quantity * p.product_price) AS priceFROM products pINNER JOIN orders oON p.product_id = o.product_idGROUP BY   p.product_name以上应该足以产生结果roduct_name, quantity, priceapple         5         50pineapple     6         45

噜噜哒

首先在表中聚合,orders然后加入产品:SELECT   p.product_id,   p.product_name,  o.quantity,  o.quantity * p.product_price AS priceFROM products p INNER JOIN(  SELECT product_id, SUM(quantity) AS quantity  FROM orders  GROUP BY product_id) o ON o.product_id = p.product_id请参阅演示。结果:| product_id | product_name | quantity | price || ---------- | ------------ | -------- | ----- || 1          | apple        | 5        | 50    || 3          | pineapple    | 6        | 45    |

HUH函数

不需要子查询...SELECT p.product_id, p.product_name  , SUM(o.quantity)  , SUM(o.quantity) * p.product_price AS priceFROM products AS p INNER JOIN orders AS oON p.product_id = o.product_idGROUP BY p.product_id, p.product_name, p.price;
打开App,查看更多内容
随时随地看视频慕课网APP