1

我的网站上有投票系统,它将每个用户投票存储在名为skmp_voting的表中,该数据库中的每条记录都有iditem_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

它从另一个名为stories的表中选择文章信息,并将其与skmp_votes表中的 vote_value 放在一起。

我很确定这是不对的,因为它选择的 vote_value 等于 1 或其他值,所以我需要以某种方式将所有 vote_values 一起计算,然后使用 mysql 查询来获取热门文章。

4

1 回答 1

1

这取决于您的投票表。正如我想象的那样,每张选票都有一行。在这种情况下,您必须对与文章匹配的选票进行总和。IE

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

于 2011-09-17T16:03:37.873 回答