我的网站上有投票系统,它将每个用户的投票存储在名为 skmp_voting 的表中,此数据库中的每条记录都有 id , item_id (这是文章用户投票的ID)和 vote_value 。 vote_value取决于用户做了什么,如果他们投票价值是“1”,如果他们投票的价值是“-1”。
我有toparticles.php页面,我不想展示热门文章,所以有更多投票的文章。这是我的mysql查询,以获得我现在的顶级文章:
SELECT stories.*, skmp_votes.vote_value FROM stories
JOIN skmp_votes ON stories.id = skmp_votes.item_id
ORDER BY skmp_votes.vote_value DESC
从其他名为故事的表中选择文章信息,并将其与 skmp_votes 表中的vote_value相对应。
我非常有信心这是不对的,因为它选择的vote_value等于1或者其他东西,所以我需要以某种方式统计所有的vote_values,然后使用mysql查询来获得热门文章。
答案 0 :(得分:1)
这取决于您的投票表。正如我想象的那样,每次投票都有一排。在这种情况下,你必须为与文章匹配的投票做一笔总和。即。
SELECT SUM(vote_value) as 'total_votes' FROM skmp_voting WHERE item_id='$article_id';
您使用SUM
代替COUNT
,因为您希望从负面投票中减去该值。
编辑:补充答案
以下查询将为您提供每篇文章及其总票数,按总票数排序(顶部投票最多的文章)
SELECT stories.*, SUM(skmp_votes.vote_value) as 'total_votes' FROM stories
JOIN skmp_votes ON stories.id = skmp_votes.item_id
ORDER BY skmp_votes.total_votes DESC
要获得最多5篇投票文章,请在最后添加LIMIT 5