2016-11-11 9 views
0

enter image description here選択データ

質問ID(1,3,2,3) 応答番号(1,6,4,7)

Question_Id Response_Id 
      1 =>1 
      3=>6 
      2=>4 
      3=>7 

上記のすべての質問に回答し、question_id(1,3,2,3)に対してresponse_id(1,6,4,7)で述べたのと同じ回答を持つusers_response(follow)テーブルから別個のユーザーを選択する必要があります。 )である。

結果は「2」にする必要があります。

あなたは私に手伝ってください、またはそれに対処するためのヒントを教えてください。 question_idとresponse_idの数を増やすことができるため、動的な方法。この例のようにここでは合計4つの条件しか与えられていませんが、上または下に行くことができます。

答えて

1
SELECT * FROM users_responses WHERE Question_Id = 1 AND Question_Id = 3 AND Question_Id = 2 AND Question_Id = 3 AND (Question_Id = 1 AND Response_Id = 1) OR (Question_Id = 3 AND Response_Id = 6 AND Response_Id = 7) OR (Question_Id = 2 AND Response_Id = 4) GROUP BY user_id; 

Question_IdとResponse_Idのペアで複数の配列を作成できる場合は、4つしかない場合はこれがクエリになります。この配列をループしてwhere条件を作成し、変数に格納してクエリを渡します。

+0

これは "OR"を使用しているため、単一の条件を満たしている行が結果になります。条件を満たすuser_id 2の行がある間に、「AND」行を選択してみました。 – coder

+0

私は答えでクエリを更新しました。これは@coder –

+0

でも結果は2にすぎませんが、間違った結果(2,6)が得られます。このクエリには "OR"があります。 @parth – coder