我有一个文章投票系统。文章存储在“stories”表中,所有投票存储在“votes”表中。 “stories”表中的 id 等于“votes”表中的 item_name(因此每个投票都与具有 item_name 的文章相关)。
我希望当投票总数达到 10 时,它会将“stories”表中的“showing”字段更新为值“1”。
这是我现在用来将选票插入数据库的查询(我想向其中添加一些内容或创建另一个查询来对用户正在投票的文章的 vote_values 求和,并查看它们是否> 10(如果是设置显示 = 1) ):
$q = "INSERT INTO {$this->votes_table} (`vote_value`, `item_name`, `ip`) VALUES({$dir}, '{$story_id}', '{$ip}')";
这是我的数据库结构:
故事表
投票表
最佳答案
尝试:
CREATE TEMPORARY TABLE tmp_ids SELECT s.id
FROM stories s
JOIN votes v ON v.item_name = s.id
WHERE s.showing != 1
GROUP BY s.id
HAVING SUM(v.vote_value) >= 10;
UPDATE stories SET showing = 1 WHERE id IN (SELECT id FROM tmp_ids)
//每次投票编辑版本
UPDATE stories s
SET s.showing = IF((SELECT SUM(vote_value) FROM votes WHERE item_name = ?) >= 10, 1, 0)
WHERE s.id = ?
关于php - 无法找出 "approve post once 10 users like it"的系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596798/