从具有一对多关系的表中获取不同的结果

时间:2015-12-09 13:15:25

标签: java mysql sql one-to-many

表格结构:

表A

  

id name qty ....

表B

  

id a_id ...

SQL:

select sum(a.qty)
from A a inner join B b on a.id=b.a_id;

现在我需要得到qty列的总和。但是它给出了重复的值。 我知道它可以通过内部查询来完成。但需要在单个查询中获得相同的内容。

这里,B与A有多对一的关系。所以,在sql查询中: 从A中选择a。* a.id = b.a_id上的内部联接B b给出了A的重复结果。我试图在单个查询中获得A的不同结果

感谢您的帮助。感谢。

1 个答案:

答案 0 :(得分:0)

您的查询与以下内容完全相同:

select  a_id
,       sum(qty) qty
from    B
group by a_id

我猜你想要更多来自a的数据,在这种情况下使用:

select     a.id
,          b.qty
from       A a 
inner join (
             select  a_id
             ,       sum(qty) qty
             from    B
             group by a_id
           ) b 
      on   a.id=b.a_id
group by   a.id

请记住,select中的每个属性都应该在聚合函数中,或者在group by中。 mysql允许它,如果你没有,但它错了。