mysql double left join double result更改列和结果

gcuhipw9  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(369)

我想在一个结果中左连接三个表,当我这样做时:http://sqlfiddle.com/#!9/546c24/2如你所见,我的结果是错误的。
我想要 COUNT(Test2.id) 成为 2 以及 SUM(Test3.positive) 成为 3 不是两个都是6。
那是我的问题。我希望这是可以理解的。

9ceoxa92

9ceoxa921#

你得到的是一个笛卡尔积 test1.id . 您需要在 JOIN 学生:

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小提琴。

相关问题