2016-12-18 2 views
0

Hier ist das Szenario, das ichWie Spaltenwerte von zwei Tabellen in vergleichen, wo Klausel

game_studentanswer 
--> studentanswerid (primary) 
--> questionid 
--> answerid (this is the answer selected by user) 

game_question 
--> questionid 

game_officialanswer 
--> officalanswerid (primary) 
--> questionid 
--> answerid (this is the answerid for correct answer) 

zu verwenden, versuche ich versuche, diese Abfrage in Yii2 zu erstellen:

SELECT COUNT(*) FROM `game_studentanswer` LEFT JOIN `game_question` ON `game_studentanswer`.`questionid` = `game_question`.`questionid` LEFT JOIN `game_officialanswer` ON `game_question`.`questionid` = `game_officialanswer`.`questionid` WHERE (`userid`='1') AND (`game_studentanswer`.`answerid` <> `game_officialanswer`.`answerid`) 

Hier ist die Code

$query = MyGameStudentanswer::find()->joinWith('question.gameOfficialanswers') 
     ->where(['userid'=>$userid])->andWhere(['answerid' => 'question.gameOfficialanswers.answerid']); 

Mein Problem ist der „UndWo()“ Teil des Codes - statt zwei Spalten zu vergleichen - es geht davon aus ‚Frage. gameOfficialanswers.answerid‘als String-Wert als Ergebnis der Abfrage, die Yii2 ausführt, ist dies

SELECT COUNT(*) FROM `game_studentanswer` LEFT JOIN `game_question` ON `game_studentanswer`.`questionid` = `game_question`.`questionid` LEFT JOIN `game_officialanswer` ON `game_question`.`questionid` = `game_officialanswer`.`questionid` WHERE (`userid`='1') AND (`game_studentanswer`.`answerid` = 'game_officialanswer.answerid') 

Jede Hilfe wird

Antwort

1

War in der Lage erkannt werden, Abhilfe zu schaffen, indem Sie` Anführungszeichen um die Tabellen- und Spaltennamen .

+0

Ich bin froh, dass Sie das lösen konnten, bevor ich überprüft habe! :) –

Verwandte Themen