MySql查询的结果不准确
我有两个表(导入大小、导出大小)都包含这两列(大小id、重量) 现在我试图得到每个表中每个大小的权重之和,我的查询如下所示MySql查询的结果不准确,mysql,sql,Mysql,Sql,我有两个表(导入大小、导出大小)都包含这两列(大小id、重量) 现在我试图得到每个表中每个大小的权重之和,我的查询如下所示 SELECT sum(i.weight) imports,sum(e.weight) exports,s.size FROM size s LEFT JOIN import_size i on s.id=i.size_id LEFT JOIN export_size e on s.id=e.size_id GRO
SELECT sum(i.weight) imports,sum(e.weight) exports,s.size
FROM size s
LEFT JOIN import_size i on s.id=i.size_id
LEFT JOIN export_size e on s.id=e.size_id
GROUP BY s.size
比如说,在尺寸1的导入尺寸表中,我们只有一条记录,但对于相同尺寸的导出尺寸表,我们有两条记录,导入尺寸产生的权重之和乘以2,有什么想法吗
例如:
导入表有1条记录:
size_id 1 - weight 2
导出表有2条记录:
size_id 1 - weight 2
size_id 1 - weight 3
查询结果如下:
imports 4 - exports 5 - size 1
无论如何
imports 2 - exports 5 - size 1
一般来说,联接为每个符合条件的排列创建一行。您正在加入3个表。您的意思是,对于尺寸1,这些表具有:
:1行大小
:1行导入大小
:2行导出大小
export\u size
记录,但是size
和import\u size
呢?这两行使用来自这两行的相同记录。这意味着,import\u size.weight
会出现两次,这就是为什么它会被加两次
顺便说一句,如果两个表都有2个大小为1的条目,您将得到4个排列,导入和导出大小都将加倍
解决方案:分别对每个表进行聚合,然后进行连接(未测试):
您能从表中发布一些条目吗?正如您所说的,import_size乘以2,如何?sqlfiddle可能会有所帮助。例如,导入表有1条记录:大小1权重2导出表有2条记录:大小1权重2和大小1权重3现在查询结果是:导入4导出5大小1我认为您必须使用简单的数据集来布局问题中的表。您希望查询结果为7吗?@Mazen,您希望得到什么结果?
SELECT i.imports, e.exports, s.size
FROM size AS s
LEFT JOIN (SELECT size_id,sum(weight) AS imports FROM import_size GROUP BY size_id) AS i ON s.id=i.size_id
LEFT JOIN (SELECT size_id,sum(weight) AS exports FROM export_size GROUP BY size_id) AS e ON s.id=e.size_id