2016-11-11 7 views
0
mehrere Werte zwischen zwei Spalten in derselben Tabelle zu vergleichen

enter image description hereAuswahldaten auf Basis von

Frage id (1,3,2,3) Antworten id (1,6,4,7)

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

Ich muss diese verschiedenen Benutzer aus users_response (folgende) Tabelle auswählen, die alle oben genannten Fragen beantwortet haben und die gleiche Antwort wie unter response_id (1,6,4,7) auf die Frage_id (1,3,2,3) beziehungsweise.

Ergebnis sollte nur '2' sein.

Können Sie mir bitte helfen oder mir einen Hinweis geben, damit umzugehen. Jeder dynamische Weg, da count of question_id und response_id erhöht werden kann. Wie in diesem Beispiel sind hier nur insgesamt 4 Bedingungen gegeben, aber es könnte nach oben oder nach unten gehen.

Antwort

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; 

dies wird Ihre Abfrage sein, wenn es nur 4 ist, wenn es mehrere sind Sie ein Array mit zwei Question_Id und RESPONSE_ID schaffen könnten. Durchlaufen Sie dieses Array, um eine where-Bedingung zu erstellen, speichern Sie sie in der Variablen und übergeben Sie die Abfrage.

+0

Dies ist mit "ODER", so dass jede Zeile, die sogar einzelne Bedingung erfüllen, im Ergebnis kommt. Ich habe versucht mit "AND" keine Zeile ausgewählt, während es eine Zeile mit user_id 2 erfüllender Bedingung gab. – coder

+0

Ich habe die Abfrage in Antwort aktualisiert versuchen Sie diese @ Coder –

+0

immer noch falsches Ergebnis (2,6), während das Ergebnis nur 2 sein sollte, hat diese Abfrage "OR", die falsche Ausgabe gibt aber ohne "OR" Null Ergebnis. @Parth – coder

Verwandte Themen