2015-03-13 113 views
0

我有一個投票系統以及表如下所示:MySQL的投票系統選擇

answers 
----------- 
int id 
text content 

results 
----------- 
int id 
int answers_id 

我想選擇這樣我就可以看到答案的數目和響應,即使沒有投票(結果) 。 我想是這樣的:

SELECT 
count(results.answers_id), answers.content 
from answers 
left outer join results 
on answers.id = results.answers_id 
group by results.answers_id 

但它不會與0票(結果)的答案。

+0

COUNT(列)不計NULL(無投票權)。使用count(*)來計算所有 - 包括null! – jarlh 2015-03-13 09:48:51

回答

0

這應該做的工作:

SELECT count(results.answer_id), answers.content 
from answers left outer join results on answers.id = results.answer_id 
group by answers.content; 
0

嘗試

SELECT 
count(result.answers_id) as acount, answers.content 
from answers 
left inner join results 
on answers.id = acount 
+0

我不認爲如果這將起作用,不應該添加group by子句,如果在select子句中使用聚合函數? – 2015-03-13 09:20:53

0

使用子查詢

SELECT a.*, 
    (SELECT COUNT(*) 
    FROM results r 
    WHERE a.id = r.answers_id 
    ) 
FROM answers a 
0

試試這個,對答案的標識分組。

SELECT 
COUNT(results.answers_id) AS NumberOfAnswers, answers.content 
from answers 
left join results 
on answers.id = results.answers_id 
group by answers.id 

要確保你不要有兩行內容相同,那麼group by answers.content

SELECT 
    COUNT(results.answers_id) AS NumberOfAnswers, answers.content 
    from answers 
    left join results 
    on answers.id = results.answers_id 
    group by answers.content 
0

使用Ifnull,也是你的GROUP BY語句將其更改爲answers.content

SELECT 
IFNULL(count(results.answers_id),0), answers.content 
from answers 
left outer join results 
on answers.id = results.answers_id 
group by answers.content 
0

我想解決方案是使用IFNULL

SELECT IFNULL(COUNT(r.answers_id), 0), 
     a.content 
FROM answers AS a 
LEFT JOIN results AS r ON a.id = r.answers_id 
GROUP BY r.answers_id