Как получить записи на основе 2 критериев - PullRequest
0 голосов
/ 09 октября 2018

Я хочу получить запись, основанную на самом высоком балле и минимальном затраченном времени

SELECT user.id, user.first_name, user.last_name, quiz.id, quiz.name, user_quiz_history.score, user_quiz_history.time_taken
FROM user_quiz_history
JOIN user ON user.id = user_quiz_history.user_id
JOIN quiz ON quiz.id = user_quiz_history.quiz_id WHERE score =
    (SELECT MAX(score)
    FROM user_quiz_history
    WHERE quiz_id = $id)
GROUP BY quiz_id
ORDER BY quiz_id dESC

С помощью этого запроса я получаю ожидаемый результат, но только с MAX (оценка).

Таместь определенные сценарии, в которых оценки равны, поэтому я должен дифференцировать на основе меньшего времени.

В этом случае он выбирает 1-ую запись из двух записей, имеющих одинаковый счет, но разное time_taken.

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете заказать по счету и времени в вашем подзапросе и ограничить 1

SELECT ...
JOIN quiz ON quiz.id = user_quiz_history.quiz_id
WHERE user_quiz_history.id =
    (SELECT qh.id
    FROM user_quiz_history qh
    WHERE qh.quiz_id = $id
    ORDER BY qh.score DESC,
             qh.time_taken ASC
    LIMIT 1)
...;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...