Mysql 如何通过关系表求和?

Mysql 如何通过关系表求和?,mysql,sql,Mysql,Sql,我有一张产品表 另一种是销售(我认为这是不必要的),另一种是注册n..m关系 如何选择产品列表以及在所有登记处售出的产品数量 我想要一些像: 我们要做的是首先使用productCod公共字段连接两个表。我们正在使用LEFT-join,因为可能有一些产品尚未销售。然后我们按productCod(和名称)对数量分组求和,我们必须将其包括在列表中,因为它不是聚合表达式,每个productCod只有一个名称。这是正确的,因为产品和销售之间存在一对多的关系。如果存在多对多关系,那么结果将是错误的 编辑:检

我有一张产品表

另一种是销售(我认为这是不必要的),另一种是注册n..m关系

如何选择产品列表以及在所有登记处售出的产品数量

我想要一些像:

我们要做的是首先使用productCod公共字段连接两个表。我们正在使用LEFT-join,因为可能有一些产品尚未销售。然后我们按productCod(和名称)对数量分组求和,我们必须将其包括在列表中,因为它不是聚合表达式,每个productCod只有一个名称。这是正确的,因为产品和销售之间存在一对多的关系。如果存在多对多关系,那么结果将是错误的


编辑:检查是否有良好的格式。

这里使用内部联接更准确

查询

SELECT 
   products.name
 , SUM(sales.quantity) AS sold 
FROM 
 products
INNER JOIN 
 sales
USING(productCod)
GROUP BY 
 products.name
ORDER BY 
 products.ProductCod ASC

结果

|    name | sold |
|---------|------|
|    some |    3 |
|    poor |    9 |
| example |    8 |

请参见演示

您是否尝试过某项服务,或者是否希望我们为您执行此操作?请记住,SO不是一项代码编写服务。编辑您的问题并显示您尝试过的SQL语句。34岁的代表应该已经知道了这一点,但为了以防万一,请查看我下一篇评论中的链接以获得一些有用的信息。您应该尝试自己编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。阅读请务必阅读和阅读。内部连接不包括没有任何销售的产品。OP问“我如何才能选择一个产品列表以及总共售出了多少产品”。是的,这需要一个
内部连接
@CetinBasoz而不是
左连接
a
左连接
将转化为一个问题“给我所有产品以及总共售出了多少产品,我根本不在乎anny产品是否售出”是的,左连接转换为左连接,这正是OP的问题所要求的。
+---------+------+
|    name | sold |
+---------+------+
|    some |    3 |
|    poor |    9 |
| example |    8 |
+---------+------+
select p.Name, sum(s.Quantity) as sold
from Products p
left join Sales s on p.ProductCod = s.ProductCod
group by p.ProductCod, p.Name;
SELECT 
   products.name
 , SUM(sales.quantity) AS sold 
FROM 
 products
INNER JOIN 
 sales
USING(productCod)
GROUP BY 
 products.name
ORDER BY 
 products.ProductCod ASC
SELECT 
   products.name
 , SUM(sales.quantity) AS sold 
FROM 
 products
INNER JOIN 
 sales
ON
  products.productCod = sales.productCod 
GROUP BY 
 products.name
ORDER BY 
 products.ProductCod ASC
|    name | sold |
|---------|------|
|    some |    3 |
|    poor |    9 |
| example |    8 |