アプリ版:「スタンプのみでお礼する」機能のリリースについて

Mysqlの命令文作成で完全に詰まってしまって途方に暮れています。

添付画像にあるように、テーブルAのanwserの値とテーブルBのuser_answerの値が同じ場合に、テーブルBのanswer_flagを0から1に変更するというMYSQLの命令文を書きたいのですが、上手く行きません。。。

UPDATE tbl_quiz_log
SET answer_flag = 1
WHERE user_answer = ANY(
SELECT tbl_question.anwser
FROM tbl_question
INNER JOIN tbl_quiz_log ON tbl_quiz_log.question_id = tbl_question.question_id
)

何が間違っているのでしょうか?

どなたかお力をお貸し頂けませんでしょうか?

どうぞよろしくお願い致しますm(_ _)m


●補足
※1 キャプチャー画像のカラムは一部のカラムのみ表示している状態です。

※2 ちなみに、テーブルAのanswerがスペルミスなのは把握しております。

「レコードAとBが等しい場合にupdate」の質問画像

A 回答 (2件)

>テーブルAのanwserの値とテーブルBのuser_answerの値が同じ場合に、テーブルBのanswer_flagを0から1に変更する



ご提示の命題と、サンプルの画像があってないですね
choice3が一致していますが、question_idが違うのでご提示のデータは1にはなりません
むしろ最終行のquestion_id=5のデータはchoice2なので合致します

やりかたはこう

UPDATE tbl_quiz_log as b
INNER JOIN tbl_question as a ON a.question_id = b.question_id
SET answer_flag = 1
WHERE a.answer=b.answer
    • good
    • 0
この回答へのお礼

お~、ありがとうございます!!

まさにその命令文で行けました!!!
ホント、助かりました!

お礼日時:2012/11/27 17:32

UPDATE tbl_question INNER JOIN tbl_quiz_log ON (tbl_question.answer=tbl_quiz_log.user_answer) AND (tbl_question.question_id=tbl_quiz_log.question_id) SET tbl_quiz_log.answer_flag = 1;



こう?

たぶん、

tbl_questionのquestion_idとtbl_quiz_logのquestion_idが一致(つまり、問題番号が一致)

かつ

tbl_questionのanswerとtbl_quiz_logのuser_answerが一致(つまり、回答者の答えが正解と一致)

の時だけ

tbl_quiz_logのanswer_flagを1にする

が、質問者さんの希望する動作だと思うのだけど。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
chie65535さんの命令文も参考にさせて頂きます^^

お礼日時:2012/11/27 17:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!