Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сортировка в группе при GROUP BY
 
 автор: nnz   (28.12.2008 в 16:43)   письмо автору
 
 

таблица 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) ?

  Ответить  
 
 автор: Root   (28.12.2008 в 17:35)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: nnz   (28.12.2008 в 17:41)   письмо автору
 
   для: 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 присутвует дважды..

  Ответить  
 
 автор: Root   (29.12.2008 в 14:07)   письмо автору
 
   для: nnz   (28.12.2008 в 17:41)
 

добавьте GROUP BY id_user

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования