Как написать условие с учетом результатов запроса? - PullRequest
0 голосов
/ 06 июля 2011

Привет, я хочу написать запрос 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 для этого? любое тело может мне помочь?

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

По всем вопросам

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

По конкретному вопросу

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
2 голосов
/ 06 июля 2011
SELECT SUM(IF(answer = 42, 1, 0)) AS correct_count, count(*) as total_count
FROM answers
WHERE user_id = 13

Предположим, что user_id, который вы хотите проверить, равен 13, а правильный ответ - 42

.
...