PHP MySQL: взять самые высокие значения из нескольких категорий и записать массив? - PullRequest
1 голос
/ 28 марта 2012

У меня есть таблица результатов студентов. Студенты могут сдавать тест несколько раз, нам важен только самый высокий балл.

Итак, таблица выглядит примерно так:

UserID      CatID       Score
20          5           60
20          5           85
20          5           80
20          6           90
20          7           80
20          7           75
20          7           90
22          5           75
22          5           85

Хотите получить обратно одну строку на основе переменной UserID, которая выглядит следующим образом:

UserID      Cat5        Cat6        Cat7
20              85          90          90

Вот что я использую для запроса:

SELECT score AS Score
, catid
FROM `quiz_result` 
WHERE userid=65 and catid=5
ORDER BY score DESC
LIMIT 0, 1

Не уверен, как получить другие категории в одном ряду ... мысли?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Попробуйте это:

SELECT CONCAT_WS(',', catID) AS catID, CONCAT_WS(',', MAX(score)) FROM `quiz_result` GROUP BY catID;
0 голосов
/ 28 марта 2012

Попробуйте этот кусок:

SELECT catID, MAX( score ) FROM `quiz_result`
GROUP BY catID;

Вывод не совсем так, как в вашем примере, но он в значительной степени дает то, что вам нужно.

EDIT

Вывод будет таким:

catID      MAX(score)
Cat5        85
Cat6        90
Cat7        90

Чтобы получить другие столбцы, просто включите их имена в запрос SELECT.

...