为了账号安全,请及时绑定邮箱和手机立即绑定

MYSQL INNER JOIN 和 GROUP BY

MYSQL INNER JOIN 和 GROUP BY

PHP
烙印99 2022-10-28 15:15:30
我有一个产品表,其中包含产品详细信息,如名称、价格、img 等,以及一个记录订单的订单表。在订单表上,我存储了产品中唯一的 product_id,我想对结果进行分组。例如在我的产品表中,我有product_id, product_name, product_price1           apple         102           juice         53           pineapple     7.5例如,对于我的订单表,我有order_id, product_id, quantity, date1         1           3         20.02.20202         3           2         22.12.20193         3           4         12.12.20204         1           2         12.02.2020我想按产品名称和数量对我的 ORDERS 表进行分组例如product_name, quantity, priceapple         5         50pineapple     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 totalFROM productsINNER JOIN orders ON products.product_id = orders.product_idGROUP BY products.product_id,        products.product_name,     orders.order_id结果也不例外我不确定我做错了什么。我需要做一个子查询吗?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

SELECT 

  p.product_name,

  SUM(o.quantity) AS quantity,

  SUM(o.quantity * p.product_price) AS price

FROM products p

INNER JOIN orders o

ON p.product_id = o.product_id

GROUP BY 

  p.product_name

以上应该足以产生结果


roduct_name, quantity, price

apple         5         50

pineapple     6         45


查看完整回答
反对 回复 2022-10-28
?
噜噜哒

TA贡献1784条经验 获得超7个赞

首先在表中聚合,orders然后加入产品:


SELECT 

  p.product_id, 

  p.product_name,

  o.quantity,

  o.quantity * p.product_price AS price

FROM 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    |


查看完整回答
反对 回复 2022-10-28
?
HUH函数

TA贡献1836条经验 获得超4个赞

不需要子查询...


SELECT p.product_id, p.product_name

  , SUM(o.quantity)

  , SUM(o.quantity) * p.product_price AS price

FROM products AS p 

INNER JOIN orders AS o

ON p.product_id = o.product_id

GROUP BY p.product_id, p.product_name, p.price

;


查看完整回答
反对 回复 2022-10-28
  • 3 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信