这是当前的系统。当用户对某个项目进行投票时,他的IP和POST_ID被记录到IP_LOG表中。问题是我希望按他们的等级(Upvotes-Downvotes)订购帖子。
所以显示就像是。
当列表中的项目向上或向下移动时,问题就变得很简单了,我希望允许任何投票此项目的用户能够对该项目进行重新投票。
因此,如果第3项要获得2个向上投票,它将使用第2项切换位置,然后我将从IP日志表中删除所有投票给12331或24211的IP。
表 IP_LOG
ID | IP | POST_ID |
---------------------------------
1 | xxx.xxx.xx | 12331 |
---------------------------------
2 | yyy.yyy.yy | 12331 |
表 POST_RANK
ID | POST_ID | Downvotes | Upvotes
-----------------------------------
1 | 32425 | 3 | 10
-----------------------------------
2 | 12331 | 1 | 5
-----------------------------------
3 | 24211 | 1 | 4
我的问题是:
我的SQL查询是什么,允许我根据(upvotes-downvotes)的数量选择POST_ID的等级
返回的东西:
尝试:
SELECT COUNT(*)
FROM POST_RANK
WHERE Upvotes - Downvotes) AS Rank
或者,在不使用cron作业的情况下,完成此功能的另一种方法是什么。我想立即更新。
答案 0 :(得分:1)
试试这个:
SELECT (Upvotes - Downvotes) as Rank
FROM POST_RANK
WHERE post_id=<id>
更新
试试这个:
select @rownum:=@rownum+1 as rank, p.* FROM POST_RANK, (SELECT @rownum:=0) r order by (Upvotes - Downvotes) desc