2013-11-27 4 views
0

У меня есть две таблицы:Запрос также возвращает столбец со значением 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 

Как это может сделать, чтобы вернуться также вопрос id = 2 с 0 count?

Ожидаемый результат:

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

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

ответ

0

Две проблемы:

  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 

DEMO

+0

ТКС Barmar, на самом деле проблема был немного более сложным и включал другую таблицу но ваш ответ помог мне получить то, что он хотел. – abfurlan

0

не используют внутреннее соединение, чтобы выбрать все 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

Смежные вопросы