如果在连接表中不存在,则显示0的SQL命令

cos*_*sta 2 mysql sql

我在SQL命令中遇到问题.

我有一个问题表,其他问题的答案,以及其他用户的回复.

想象一下以下示例:

问题1:谁将赢得半决赛?
Aswners:A)葡萄牙B)西班牙
回复:10人投票B)西班牙,0人投票A)葡萄牙

SELECT a.answer, COUNT(r.id) as total
FROM replies r
LEFT JOIN answers a ON a.id = r.id_answer
LEFT JOIN questions q ON q.id = a.id_question
WHERE q.id = 1
GROUP BY r.id_answer
Run Code Online (Sandbox Code Playgroud)

我的观点是从
SELECT结果中得出:
西班牙10
葡萄牙0

但我不能,我不知道该怎么做,因为我的方式,我总是得到回复表上的回复结果.像这样:
西班牙10

Pet*_*ang 6

您必须从问题和LEFT JOIN回复开始.

SELECT a.answer, COUNT(r.id_answer) AS total
FROM questions q
JOIN answers a ON ( a.id_question = q.id )
LEFT JOIN replies r ON ( r.id_answer = a.id )
WHERE q.id = 1
GROUP BY a.id, a.answer
Run Code Online (Sandbox Code Playgroud)

使用您当前的查询,您甚至不需要question:

SELECT a.answer, COUNT(r.id_answer) AS total
FROM answers a
LEFT JOIN replies r ON ( r.id_answer = a.id )
WHERE a.id_question = 1
GROUP BY a.id, a.answer
Run Code Online (Sandbox Code Playgroud)

有关 SQL Fiddle的第二个查询,请参阅此示例,查询返回:

ANSWER      TOTAL
Spain       10
Portugal    0
Run Code Online (Sandbox Code Playgroud)