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理解极限,我找不到有效的语法。你能帮忙吗?
答案 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