在MySQL中找到缺少的投票

时间:2013-10-16 06:16:00

标签: mysql

我有一张包含唯一ID的提案表。我有另一张表格,对提案进行投票,并与正确的提案ID和投票&每行投票的用户名。

现在我想向一位用户展示他尚未投票的提案。我该怎么做,可能在一个用户的一个查询中?

表架构:

提案:

pr_id  proposal
1      proposal_text1
2      proposal_text2
3      proposal_text3

评价:

vote_id  pr_id  vote  user
1        1      yes   jack
2        1      no    jill
3        2      yes   jack

所以在一个例子中,我想告诉吉尔她还没有投票支持提案2和。

2 个答案:

答案 0 :(得分:4)

查询一个用户:

SELECT  a.*
FROM    Proposals a
        LEFT JOIN Votes b
            ON  a.pr_id = b.pr_id
                AND b.user = 'jack'
WHERE   b.pr_id IS NULL

查询显示所有用户及未投票的提案:

SELECT  DISTINCT a.*, b.user
FROM    Proposals a
        CROSS JOIN Votes b
        LEFT JOIN Votes c
            ON  a.pr_id = c.pr_id
                AND b.user = c.user
WHERE   c.pr_id IS NULL
ORDER   BY b.user, a.pr_id

答案 1 :(得分:1)

以用户'jack'为例:

select * 
from Proposals 
where not pr_id in (select pr_id from Votes where user='jack')

SQL Fiddle here