2011-02-26 75 views
0

我想知道有多少用户answerd一个问题,所以我做了查询:SQL - 伯爵查询问题

SELECT answer.idAnswer, 
      answer.title, 
      answercategory.label, 
      (SUM(1)) as nbAnswer 
     FROM ANSWER 
INNER JOIN answerCategory ON answer.idAnswerCategory = answercategory.idAnswerCategory 
LEFT JOIN answerUser ON answer.idAnswer = answerUser.idAnswer 
    GROUP BY answer.idAnswer 

它几乎工作,只有不工作的事情是,它给我。“一个”回答,如果没有人回答了这个问题(这意味着即使没有记录在answerUser)。在这种情况下,我希望有零而不是一个。如果我添加一个“-1”,当有一个答案,我会得到零。任何想法如何我可以纠正?

+0

这是MySQL或SQLite的? – 2011-02-26 04:25:10

回答

2

使用COUNT(answerUser.idAnswer)而不是SUM(1)。 Count将忽略由LEFT JOIN创建的NULL行。

1

使用COUNT(*),而不是SUM(1)

1
SELECT answer.idAnswer, answer.title, answercategory.label, count(*) as nbAnswer 
FROM answer 
INNER JOIN answerCategory on answer.idAnswerCategory = answercategory.idAnswerCategory 
LEFT JOIN answerUser ON answer.idAnswer = answerUser.idAnswer 
GROUP BY answer.idAnswer