2014-09-30 109 views
0

考虑这些表:用count()连接LEFT OUTER JOIN?

名单

id  name 
1  somename 
2  someothername 

导致

id list 
1 1 
2 1 
3 1 

目前,我有以下查询:

SELECT lists.*, count(leads.id) 
FROM lists 
LEFT OUTER JOIN leads ON lists.id =leads.list 

为什么只显示第一个列表,而不是同时显示两个列表? 列表1,计数= 3,列表2计数= 0?

只有第一个列表显示?为什么是这样?

+2

您需要'group by lists.id'在查询结束 – 2014-09-30 18:54:16

回答

3

要在COUNT() aggregation组,你要使用GROUP BY

SELECT 
    lists.id, count(leads.id) 
FROM 
    lists 
    LEFT OUTER JOIN leads 
     ON lists.id =leads.list 
GROUP BY 
    lists.id 
+0

该死的..谢谢!现在我已经绕了一圈了! – 2014-09-30 18:55:59

0

你左侧的接合部从leadslists,它选择从leads所有的值(其中只有表1),只值从lists哪里有一场比赛。相反:LEFT OUTER JOIN lists ON lists.id =leads.list