|
|
|
| таблица vote
id_foto | id_user | mark
фотка | юзер | оценка
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
делаю так
select id_foto, id_user, max(mark) as mark from vote group by id_user order by mark desc
тоесть мне надо вывести фотку с максимальной оценкой для каждого юзера и отсортировать для топа.
Проблема в том, что в результате max(mark) не соответствуем своим значениям id_foto и id_user.
Выводится вот так:
3 | 1 | 3
1 | 1 | 2
третий столбец не соответсвует первым двум.
Как отсортировать данные в самой группе и вывести для нужного max(mark) ? | |
|
|
|
|
|
|
|
для: nnz
(28.12.2008 в 16:43)
| | http://dev.mysql.com/doc/refman/5.1/en/example-maximum-column-group-row.html
SELECT id_photo, id_user, mark
FROM vote AS v1
WHERE mark = (SELECT MAX(mark) FROM vote AS v2 WHERE v1.id_user = v2.id_user)
ORDER BY mark DESC;
|
| |
|
|
|
|
|
|
|
для: Root
(28.12.2008 в 17:35)
| | Пробовал первым делом, не подходит.
Если добавить запись
id_foto | id_user | mark
5 | 2 | 3
тоесть с такой же оценкой, которая уже была у другой фотки этого юзера, то результат запроса
id_foto | id_user | mark
4 | 2| 3
5 | 2 | 3
2 | 1 | 2
тоесть юзер 2 присутвует дважды.. | |
|
|
|
|
|
|
|
для: nnz
(28.12.2008 в 17:41)
| | добавьте GROUP BY id_user | |
|
|
|