2013-10-16 75 views
2

我有一個含唯一ID的提案表。我還有另一張表格,其中包含有關投標的投票,並與適當的投標ID和每行投票的投票用戶名稱&相關聯。查找MySQL中丟失的投票數

現在我想顯示一個單獨的用戶,他沒有投票的提案。我怎麼做,可能在一個用戶的查詢中?

表模式:

建議:

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和3還。

+3

我們怎樣才能知道不知道表模式? – Raptor

+0

@ShivanRaptor對不起,添加架構 – uncovery

回答

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 
+0

同意第一個。不同意最後一個。如果用戶沒有對任何提案進行投票,那麼您將不會返回該用戶的所有投標。 +1/2? –

+0

TBH第一個爲我工作,不知道第二個人做什麼100%。 – uncovery

+0

@uncovery你沒有用戶表。 –

1

使用用戶 '傑克'作爲例子:

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

SQL Fiddle here