[英]Query also returns column with value 0
I have two tables: 我有两个表:
tb_question
**id_quest** | **desc_quest**
1 | How do you do...?
2 | How are you...?
tb_answer
**id_quest** | **date_answer**
1 | 2013/11/25
1 | 2013/11/26
1 | 2013/11/27
And my query: 而我的查询:
SELECT
q.id_quest,
q.desc_quest,
COUNT(a.id_quest) as total_answer -- count total answer by question
FROM tb_question q
INNER JOIN tb_answer a
ON q.id_quest = a.id_quest;
Result: 结果:
ID_QUEST | DESC_QUEST | TOTAL_ANSWER
1 | How do you do...? | 3
How could it do to return also question id = 2 with 0 count ? 如何返回还等于0的id = 2的问题?
Expected result: 预期结果:
ID_QUEST | DESC_QUEST | TOTAL_ANSWER
1 | How do you do...? | 3
2 | How are you...? | 0
http://sqlfiddle.com/#!2/3bfe7/1 http://sqlfiddle.com/#!2/3bfe7/1
Two problems: 两个问题:
You have to use an outer join to get questions with no answers. 您必须使用外部联接来获取没有答案的问题。
You left out the GROUP BY
clause. 您忽略了
GROUP BY
子句。
SELECT
q.id_quest,
q.desc_quest,
COUNT(a.id_quest) as total_answer
FROM tb_question q
LEFT OUTER JOIN tb_answer a ON q.id_quest = a.id_quest
GROUP BY q.id_quest
不要使用内部联接来选择所有idquest,使用内部联接来产生表的子集
SELECT tbq.id_quest,tbq.desc_quest,COUNT(tba.id_quest) FROM tb_question tbq LEFT OUTER JOIN tb_answer tba ON tba.id_uest=tbq.id_quest GROUP BY tbq.id_quest ORDER BY tbq.id_quest
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.