我正在尝试制作一个包含轮询部分的网站。如果用户尚未投票,则用户需要能够进行以前的民意调查。因此,对于他们所进行的每次民意调查,它会在单元格中添加一个注释。
表格如下所示:
userid | poll1 | poll2 | poll3 | poll4 /
---------+--------+--------+-------+--------/
001 | Y | Y | | /
---------+--------+--------+-------+--------/
002 | Y | | Y | /
--------------------------------------------/
现在,代码必须为用户001选择poll 3和4,并将其呈现给页面上的用户。我一直在尝试几种不同的方法,但似乎找不到合适的代码。
我在网上寻找了一些帮助,但没有找到解决此问题的任何内容。
答案 0 :(得分:0)
用户
id | name
---+-------
1 | tyrion
2 | cersei
投票
id | name
---+-------
1 | first poll
2 | second poll
UserPolls
user_id | poll_id
--------+-------
1 | 1
1 | 2
2 | 2
在上面的表结构中,您有两个主要对象表和一个名为UserPolls的关系表。对于你想要的任何数量的民意调查,这都可以很好地扩展。 然后,如果您想知道给定用户采取了哪些民意调查,您可以这样做:
SELECT poll_id FROM UserPolls WHERE user_id = 1
或者如果你想要相反的话。投票不是由特定用户进行的:
SELECT id FROM Polls WHERE Polls.id NOT IN (SELECT poll_id FROM UserPolls WHERE user_id = 1)
注意:这不是经过测试的代码,但您可以大致了解如何设计和规范化表格。