Mysql посчитайте, сколько ответов верны - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть таблица user_answers:

id | quiz_id | user_id | question_id | choosen_answer_id |
1  |    1    |    2    |      1      |        5          |  
2  |    1    |    2    |      2      |        6          |  
3  |    1    |    2    |      3      |        7          |  
4  |    1    |    3    |      1      |        5          |  
5  |    1    |    3    |      2      |        8          |  
6  |    1    |    3    |      3      |        9          |  

Я хочу cont, сколько правильных ответов (одинаковых choosen_answer_id для одинаковых question_id) имеет пользователь с user_id = 3 по сравнению с user_id = 2 на том же quiz_id

В этом примере я должен получить 1, потому что пользователь с user_id = 3 ответил правильно только на вопрос с question_id = 1 (для user_id = 2, question_id = 1 choosen_answer_id = 5 и дляuser_id = 3, question_id = 1 choosen_answer_id = 5`).

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019
select user_id, count(*)
from table1 t1
join (select *from table1 where user_id = 2) t2
on t2.question_id = t1.question_id
where t2.choosen_answer_id  = t1.choosen_answer_id 
group by t1.user_id
0 голосов
/ 17 февраля 2019

Я понимаю, что вы готовы подсчитать, за сколько вопросов оба пользователя дали один и тот же ответ.Вы можете самостоятельно присоединиться к таблице следующим образом:

SELECT COUNT(*) AS number_of_identical_answers
FROM user_answers ua2
INNER JOIN user_answers ua3 
    ON  ua3.user_id           = 3 
    AND ua3.quiz_id           = ua2.quiz_id 
    AND ua3.question_id       = ua2.question_id 
    AND ua3.choosen_answer_id = ua2.choosen_answer_id
WHERE ua2.user_id = 2

Если вы хотите отобразить объединенные записи вместо их подсчета, вы можете изменить COUNT(*) на список столбцов из таблиц ua2 (ответыпользователя 2) и ua3 (ответы пользователя 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...