0

、、poll_responseの 3 つの列を持つテーブル があります。user_idpoll_idoption_id

任意の数の poll/response ペアを指定します。個別user_idの s の一致数を特定するにはどうすればよいですか?

したがって、テーブルのデータが次のようになっているとします。

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

また、投票 2 に「1」、投票 3 に「0」と回答したユーザーの数を知りたいとします。

この場合、ユーザー 1 のみが一致するため、答えは、1 人の異なるユーザーしか存在しないということです。

しかし、投票 2 に "1" と回答し、投票 4 に "0" と回答したユーザーの数を知りたいとします。

この場合、ユーザー 1 とユーザー 2 の両方が一致するため、答えは、2 人の異なるユーザーが存在するということです。

これを実現するための MySQL クエリの作成に問題があります。特に、任意の数のポーリングと応答のペアがある場合はそうです。一連の結合を連鎖させようとするだけですか?

4

1 に答える 1

1

投票 2 に「1」、投票 3 に「0」と回答したユーザーの数を知る。

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.

于 2012-09-13T02:19:07.387 に答える