计算另一个表中的投票计数符合标准的记录

时间:2016-03-19 19:50:40

标签: mysql database

SQL初学者。

我有两张桌子,评论和投票。我有comments.id和votes.commentid,它允许我附上投票评论。

表包含: comments.id comments.text

votes.commentid(ref comments.id) votes.vote(1或-1)

所以人们发表评论,其他人投票。如果人们改变他们的投票,它会反映在投票表中,所以每个人只能投票一次,所以没有大规模上调/下注等等。

我要做的是获取所有评论,这些评论的反对票数低于25%。我不知道如何编写此查询。我尝试的任何东西都只是一个SQL错误。

所以基本上我想做点什么(原谅我这里可怕的sql)

select text from comments
where 
count(where votes.commentid=comments.id AND votes.vote<0) <
(count(where votes.commentid=comments.id AND votes.vote>0)*.25)

所以我已经尝试了一切我的SQL理解极限,我找不到有效的语法。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT text FROM (SELECT commentid, SUM(IF(vote > 0, 1, 0)) AS pos_votes,
SUM(IF(vote < 0, 1, 0)) AS neg_votes FROM votes GROUP BY commentid) AS vote_count
INNER JOIN comments ON comments.id = vote_count.commentid WHERE
(neg_votes * 100 / (neg_votes + pos_votes)) <= 25