我有以下 sql 语句:

    select
    a.desc
   ,sum(bdd.amount)
   from t_main c
   left outer join t_direct bds on (bds.repid=c.id)
   left outer join tm_defination def a on (a.id =bds.sId)
   where c.repId=1000000134
   group by a.desc;

当我运行它时,我得到以下结果:
   desc       amount
   NW         12.00
   SW         10

当我尝试添加另一个左外连接以获取另一组值时:
   select
    a.desc
   ,sum(bdd.amount)
   ,sum(i.amt)
   from t_main c
   left outer join t_direct bds on (bds.repid=c.id)
   left outer join tm_defination def a on (a.id =bdd.sId)
   left outer join t_ind i on (i.id=c.id)
   where c.repId=1000000134
   group by a.desc;

它基本上将金额字段加倍,例如:
         desc    amount   amt
         NW       24.00   234.00
         SE       20.00   234.00

虽然结果应该是:
        desc   amount   amt
        NW      12.00   234.00
        SE      10.00   NULL

我该如何解决?

最佳答案

由于最有可能的多重关系,您的新左外连接迫使一些行在结果集中返回几次。删除您的 SUM 并查看返回的行并准确计算出您需要哪些行(如果适用,可以将其限制为特定类型的 t_ind 记录??),然后相应地调整您的查询。

关于sql - 多个表的左外连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19627738/

10-10 04:44