如何使用mysql左连接将标题中的单个值和细节中的总值相加

如何使用mysql左连接将标题中的单个值和细节中的总值相加,mysql,join,group-by,Mysql,Join,Group By,我有两张一对多关系的桌子。一个是标题,另一个是细节 表头表格列为状态、项目、账单、数量 明细表列为标题ID、分配给、分配数量 我需要使用左连接获取标题数量和详细信息数量之和,因为详细信息有时可能不存在 以下是加入后(分组前)的情况 分组后我需要的结果应该是 State, Item, Total Quantity (Header), Total Allocated (Detail Quantity). 但我的问题是我在做左连接,所以头值是重复的,当我对重复的值求和时,也对重复的值求和 这是我尝

我有两张一对多关系的桌子。一个是标题,另一个是细节

表头表格列为状态、项目、账单、数量

明细表列为标题ID、分配给、分配数量

我需要使用左连接获取标题数量和详细信息数量之和,因为详细信息有时可能不存在

以下是加入后(分组前)的情况

分组后我需要的结果应该是

State, Item, Total Quantity (Header), Total Allocated (Detail Quantity).
但我的问题是我在做左连接,所以头值是重复的,当我对重复的值求和时,也对重复的值求和

这是我尝试过的问题

SELECT
  a.State,
  a.Item,
  b.Allocated,
  sum(a.Quantity) AS Header_Total, -- Should take unique/single
  sum(b.Quantity) AS Detail_Taol
FROM table1 a
  LEFT JOIN table2 b ON a.ID = b.Header_ID
GROUP BY
  a.State,
  a.Item,
  b.Allocated;
请帮助查询以获得所需的结果。

JOIN(包括LEFT JOIN)创建一个结果集,其中包含ON子句允许的所有行对。因此,求和(a,Quantity)表达式将该值的多个副本相加,因此在许多情况下会生成错误的结果

这有时被称为组合爆炸或基数错误

修正:取下总数,将a.数量添加到分组中

SELECT
  a.State,
  a.Item,
  b.Allocated,
  a.Quantity AS Header_Total, 
  sum(b.Quantity) AS Detail_Taol
FROM table1 a
  LEFT JOIN table2 b ON a.ID = b.Header_ID
GROUP BY
  a.State,
  a.Item,
  b.Allocated,
  a.Quantity;

添加您尝试过的sql。缺少有关“帮助他人重现问题”的信息,请参阅:。共享一些表定义、一些数据和所需的输出。您的两个表似乎没有任何相同的列。你是如何将它们联系起来的?图中显示的是加入后的结果。我编辑了问题并添加了用于获取结果的查询。查询中有表中缺少的列。