我想在一个结果中保留三个表的连接,而当我这样做时:http://sqlfiddle.com/#!9/546c24/2我的结果是错误的。
我希望COUNT(Test2.id)
是2
,而SUM(Test3.positive)
是3
,而不是两者都是。
那是我的问题。我希望这是可以理解的。
答案 0 :(得分:2)
每个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;
Here是SQL Fiddle。