我有一张包含唯一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和。
答案 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')