我有一个投票web应用程序,它有一堆投票。有两个表格,一个是民意调查的问题和答案,另一个是人们对这些民意调查的投票。对于每个用户,我想提供下一个功能,这样当他们按下一个按钮,它会带他们到一个新的民意调查,他们没有回答。我不想添加更多的字段到表中,我不知道如何"保存"投票id的特定用户尚未回答。这肯定已经做过很多次了,你使用过哪些解决方案/设计模式?
获取用户尚未回答的随机投票:
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;
您只需查询该用户没有投票的投票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
的表结构不存储poll ID和用户ID,那么必须有其他方法来唯一标识poll和用户。