MySQL double left join使结果加倍,从而更改列和结果

MySQL double left join使结果加倍,从而更改列和结果,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,我想在一个结果中左连接三个表,当我这样做时:我的结果是错误的,正如你们所看到的 我希望COUNT(Test2.id)是2和SUM(Test3.positive)是3而不是两者都是6 那是我的问题。我希望这是可以理解的。对于每个test1.id,您都会得到一个笛卡尔积。您需要在加入之前进行聚合s: SELECT t1.id,Test1.name, t2.cnt_2, t3.sum_pos, t3.sum_neg FROM Test1 t1 LEFT JOIN (SELECT

我想在一个结果中左连接三个表,当我这样做时:我的结果是错误的,正如你们所看到的

我希望
COUNT(Test2.id)
2
SUM(Test3.positive)
3
而不是两者都是6


那是我的问题。我希望这是可以理解的。

对于每个
test1.id
,您都会得到一个笛卡尔积。您需要在加入
之前进行聚合
s:

SELECT t1.id,Test1.name, t2.cnt_2,
       t3.sum_pos, t3.sum_neg
FROM Test1 t1 LEFT JOIN
     (SELECT ID_Test1, COUNT(*) as cnt_2
      FROM Test2
      GROUP BY ID_Test1
     ) t2
     ON t1.id = t2.ID_Test1 LEFT JOIN
     (SELECT ID_Test1, SUM(positive) as sum_pos, SUM(negative) as sum_neg
      FROM Test3
      GROUP BY ID_Test1
     ) t3
     ON t1.id = t3.ID_Test1
GROUP BY t1.id;

是SQL提琴。

先生,如何创建SQL提琴?@MohitKumar。提示:www.sqlfiddle.com。如果您在这方面有问题,总会有rextester和db fiddle,当然还有其他的。