我有一个民意调查网络应用程序,它有一堆民意调查。有两个表,一个是民意调查问题和答案,另一个是民众对这些民意调查的投票。对于我想要提供下一个功能的每个用户,当他们按下一个按钮时,他们将进行一个他们没有回答的新轮询。我不想再向表中添加字段,我不知道如何为特定用户“保存”尚未回答的轮询ID。这肯定已经做过很多次了,你用过的解决方案/设计模式是什么?
答案 0 :(得分:2)
获取随机投票用户尚未回答:
SELECT p.poll_id FROM polls p WHERE p.poll_id NOT IN
(SELECT r.poll_id FROM poll_to_user r WHERE r.user_id = [current_user_id])
ORDER BY RAND() LIMIT 1;
答案 1 :(得分:1)
您只需查询此用户未投票的投票ID。
SELECT p.id
FROM polls p
WHERE p.id NOT IN (SELECT v.poll_id FROM votes v WHERE v.user_id = $this_user_id)
ORDER BY p.date_added
LIMIT 1;
或ORDER BY RAND() LIMIT 1
如果你想随意拿一个。
如果votes
的表结构不存储轮询ID和用户ID,则必须有其他方法来唯一标识轮询和用户。