2011-07-06 3 views
-1

こんにちは、私は条件賢明な結果を与えるmysqlのクエリを書きたいです。クエリを提供する条件付きの結果を書き込む方法は?

などです。質問、回答値、ユーザーが値フィールドを選択したテーブルがあります。

ユーザーは、この質問に何度も答えることができます。

 
qid  rightanz  wronganz 
11   4    2 
11   4    4 
11   4    1 
25   1    1 

I want out put like this 
qid  rightanz  wronganz 
11   1   2 
25   1   0 

ユーザーがその質問に対して正解と誤った回答を何回提供したいのですか? どうすればmysqlクエリを書くことができますか?どんな体が私を助けることができますか?あなたが点検したいuser_id仮に

+0

それは非常に参考になります表のスキーマと、これらの列が表にどのように設定されているかを指定できます。 – rajasaur

答えて

2

ある

SELECT a.userId 
,SUM(CASE WHEN q.answer = a.answer THEN 1 ELSE 0 END) AS correct_answers 
,SUM(CASE WHEN q.answer = a.answer THEN 0 ELSE 1 END) AS wrong_answers 
FROM questions q 
JOIN answers a ON q.qid = a.qid 
WHERE q.qid = <question_id> 
GROUP BY a.userId 
+0

助けてくれてありがとうございます:) – learner

+0

どういたしまして! – niktrs

2
SELECT SUM(IF(answer = 42, 1, 0)) AS correct_count, count(*) as total_count 
FROM answers 
WHERE user_id = 13 

は13で、正解は、特定の問題については、すべての質問

SELECT a.userId, q.qid 
,SUM(CASE WHEN q.answer = a.answer THEN 1 ELSE 0 END) AS correct_answers 
,SUM(CASE WHEN q.answer = a.answer THEN 0 ELSE 1 END) AS wrong_answers 
FROM questions q 
JOIN answers a ON q.qid = a.qid 
GROUP BY a.userId, q.qid 

については42

+2

これはヒントです: 'SUM(IF(answer = 42、1、0))'はより優雅に 'SUM(answer = 42)'と表現されます – Bohemian

+0

@Bohemian:偉大なキャッチ – zerkms

関連する問題