在我的表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
答案 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