簡體   English   中英

查詢還會返回值為0的列

[英]Query also returns column with value 0

我有兩個表:

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

而我的查詢:

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;

結果:

ID_QUEST  | DESC_QUEST              | TOTAL_ANSWER
   1      | How do you do...?       |    3

如何返回還等於0的id = 2的問題?

預期結果:

ID_QUEST  | DESC_QUEST              | TOTAL_ANSWER
   1      | How do you do...?       |    3
   2      | How are you...?         |    0

http://sqlfiddle.com/#!2/3bfe7/1

兩個問題:

  1. 您必須使用外部聯接來獲取沒有答案的問題。

  2. 您忽略了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM