现在,我的网站上有一个投票系统,它将所有投票存储在投票表中。在votes表中,我有一个名为item_name的字段,其中包含喜欢的文章的id。所有文章信息(包括其 ID)都位于 stories 表中。在每个votes表中,都有一个名为vote_value的字段,可以是1和-1,具体取决于用户投票的内容(喜欢/不喜欢)。
我需要以某种方式汇总某篇文章的所有记录,如果总计为 10 条或更多,则文章获得批准。为了批准文章,我在 stories 表中有一个名为 showing 的字段,它可以有两个值 0 - 未证实 1 - 已批准。因此,我需要以某种方式做到这一点,一旦一篇文章获得 10 个赞(作为 votes 表中所有记录的总和),将 showing 设置为 1(显示在 >故事表)。
最好没有任何查询,假设让数据库检查显示 = 0 的文章的 vote_value 总和(并忽略显示 = 1 的文章,因此使用更少的服务器资源)。我不确定这对于服务器来说是否需要做很多事情,也许这不是最有效的方法。
编辑:如果用户愿意,他们可以取消投票并更改投票值(例如,他们喜欢该帖子,但他们可以将其更改为不喜欢)。
我的数据库结构:
故事
投票
最佳答案
UPDATE stories SET showing = 1 WHERE id IN (SELECT id, SUM (vote_value) as total_votes from votes GROUP BY item_name WHERE total_votes > 10)
我认为有效的方法(取决于投票量):
投票时:
Insert into votes set vote_value = '-1' where id = xx;
UPDATE stories SET showing = 1 WHERE id IN (SELECT id, SUM (vote_value) as total_votes from votes WHERE id=xx AND total_votes > 10);
最后一个可以用 PHP 分解,因为这是一种有点奇怪的方法。
关于php - 需要 "approve post if 10 people like it"功能背后的逻辑支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564667/