返回所有行,即使连接表有空结果

时间:2014-09-07 15:37:52

标签: php sql join rows multiple-columns

在我的表1中我有类似的东西

name     |  age  
George      42
Bob         30
Ken         23   

在我的表2中,我有类似的东西,这是我为每个人存储投票的地方。

name    |   votes  | 
George       1
Ken          1
George       1
George       1
Ken          1

我的目标是组合2个表,并返回表1中的所有行,即使表2中不存在。

欲望结果:

name     |  age   |  total_votes
George      42       3
Bob         30       0
Ken         23       2

但我得到了:

name     |  age   |  total_votes
George      42       3
Ken         23       2

我尝试过这样的事情

SELECT `table_1`.*, coalesce(COUNT(`table_2`.votes), 0) AS total_votes
FROM `table_1`
LEFT JOIN `table_2`
ON `table_1`.name = `table_2`.name

2 个答案:

答案 0 :(得分:1)

试试这个。这适用于MS Access,我认为这也可以用于将查询转换为SQL:

SELECT Table1.name, First(Table1.age) AS age, Count(Table2.Votes) AS totalVotes 
FROM Table1 LEFT JOIN Table2 ON Table1.name = Table2.name
GROUP BY Table1.name;

左连接table1到table2,以便table1中的所有条目,即使它是相应的数据为null,也将被包括在内。按名称分组查询,以便按名称计算投票数。

答案 1 :(得分:0)

您可以执行以下操作之一:     1)使用右连接而不是当前的左连接。 要么     2)交换表1和表2放在连接表达式中,如:     来自table_2     LEFT JOIN table_1