mySQL投票系统SELECT

时间:2015-03-13 09:16:20

标签: mysql sql

我有一个投票系统,表格如下:

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票(结果)得到答案。

6 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

使用子查询

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

答案 2 :(得分:0)

试试这个,按答案的ID分组。

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

为了确保您没有2行具有相同内容,请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

答案 3 :(得分:0)

使用Ifnull并在您的分组语句中将其更改为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

答案 4 :(得分: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

答案 5 :(得分:0)

这应该做的工作:

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