php - 需要 "approve post if 10 people like it"功能背后的逻辑支持

标签 php mysql

现在,我的网站上有一个投票系统,它将所有投票存储在投票表中。在votes表中,我有一个名为item_name的字段,其中包含喜欢的文章的id。所有文章信息(包括其 ID)都位于 stories 表中。在每个votes表中,都有一个名为vote_value的字段,可以是1和-1,具体取决于用户投票的内容(喜欢/不喜欢)。

我需要以某种方式汇总某篇文章的所有记录,如果总计为 10 条或更多,则文章获得批准。为了批准文章,我在 stories 表中有一个名为 showing 的字段,它可以有两个值 0 - 未证实 1 - 已批准。因此,我需要以某种方式做到这一点,一旦一篇文章获得 10 个赞(作为 votes 表中所有记录的总和),将 showing 设置为 1(显示在 >故事表)。

最好没有任何查询,假设让数据库检查显示 = 0 的文章的 vote_value 总和(并忽略显示 = 1 的文章,因此使用更少的服务器资源)。我不确定这对于服务器来说是否需要做很多事情,也许这不是最有效的方法。

编辑:如果用户愿意,他们可以取消投票并更改投票值(例如,他们喜欢该帖子,但他们可以将其更改为不喜欢)。

我的数据库结构:

故事


enter image description here

投票


enter image description here

最佳答案

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/

相关文章:

php - preg_match_all 未捕获所有预期结果

php - 如何获取上传到 Amazon S3 的视频文件长度?

php - Joomla 中的外部登录验证

php - SQL 查询不使用 php 变量

MySQL:与动态值匹配

Php Mailer 问题 - 邮件被标记为垃圾邮件 -

php - 使用PHP发送特定图像

mysql - 使用一个 SQL 查询进行 SELECT、UPDATE、DELETE?

java - 总小时数无法从 Android 插入 MySQL

mysql - 使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例