2012-09-13 34 views
0

我有一個表,poll_response,有三列:user_idpoll_idoption_idMySQL:查找具有相同民意調查答案的用戶數

給定任意數量的投票/回覆對,我如何確定不同user_id的匹配數量?

因此,假設表的數據是這樣的:

user_id | poll_id | option_id 
1   1   0 
1   2   1 
1   3   0 
1   4   0 
2   1   1 
2   2   1 
2   3   1 
2   4   0 

再假設我想知道有多少用戶回答「1」輪詢2和「0」輪詢3.

在這種情況下,只有用戶1匹配,所以答案是:只有一個不同的用戶。

但是假設我想知道有多少用戶回答「1」輪詢2和「0」輪詢4

在這種情況下,無論用戶1和用戶2的比賽,所以答案是:有2個不同的用戶。

我在構建MySQL查詢時遇到了麻煩,特別是考慮到有任意數量的輪詢/響應對。我是否試圖將一堆連接鏈接在一起?

+0

我猜你有你的問題一個錯字。它關於兩個不同的用戶。 '我想知道有多少用戶迴應了「1」輪詢2和「0」輪詢3.「我想這只是與您的條件匹配的」1「而不是」1「和」2「。 –

+0

你說得對,約翰。我糾正了。 – jawns317

回答

1

知道有多少用戶已回覆「1」輪詢2和「0」輪詢3.

select count(user_id) from(
select user_id from tblA 
where (poll_id=2 and option_id=1) or (poll_id=3 and option_id=0) 
group by user_id 
having count(user_id)=2 
)m 

SQL FIDDLE HERE.