【发布时间】:2009-04-03 18:03:36
【问题描述】:
我正在使用民意调查:每个民意调查都有很多选项,用户可以在民意调查中投票一次。因此,我有一个包含以下字段的“投票”表:
- id(投票的id)
- option_id(所选投票选项的 ID)
- user_id(用户ID)
- poll_id(投票ID)
这就是我想要做的:给定一个 poll_ids 数组,我想让一个查询返回每个投票中投票最多的选项。因此,如果我给出 1 和 2 的 poll_id,我想取回投票 1 和 2 的投票最多的选项。我尝试了以下方法:
SELECT
t1.poll_id,
t1.option_id,
count(t1.option_id) AS num_votes,
t2.option_id AS user_vote
FROM
votes AS t1
JOIN
votes AS t2
ON
t1.id = t2.id
WHERE
t1.poll_id IN (30,40)
GROUP BY
t1.option_id;
这几乎可以解决问题...但为我提供了所有个投票选项,并为提供的每个投票提供相应的投票,而不仅仅是投票最多的选项。如果有人有任何想法,我将不胜感激。谢谢。
【问题讨论】:
-
你为什么又加入了投票?
-
我同意 Pablo 的问题。你为什么这样做?
-
我认为他的意思是参加投票,而不是投票。
标签: mysql complexity-theory self-join