Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Подсчет и вывод лидеров голосования (ORDERBY) (Александр) 14/03/2011 - 13:16:01
      Re: Подсчет и вывод лидеров голосования (ORDERBY) (Akina) 14/03/2011 - 18:27:26



From: Александр - 14/03/2011 - 13:16:01
Subject:Подсчет и вывод лидеров голосования (ORDERBY)
-----------------
Здравствуйте.

Возникла проблемка с выводом лидеров голосований за определенный период, вобщем есть таблица votingapi_vote:

content_id // id объекта за который отдан голос
value // сам голос, значения 100,80,60,40,20
timestamp // точка времени (1291167629)

Для определения пятерки лидеров делаю следующий запрос:

SELECT content_id, count( content_id ) AS vote_count, (SUM( value ) / count( content_id ) ) AS vote_result
FROM votingapi_vote
WHERE timestamp BETWEEN '1298869200' AND '1299387600'
GROUP BY content_id
ORDER BY vote_result DESC, vote_count DESC
LIMIT 5

В результате получил:
content_id vote_count vote_result
158 1 100
80 1 100
119 1 100
170 1 100
120 1 100

Что совсем не соответствует правде, на основе результата сделал вывод, что поля vote_count не подключается к сортировке результата. Погуглив немного по форуму на тему сортировки так и не нашел работающего варианта, пробовал варианты с подзапросом, расчет данных в самой сортировке, так и не сумел правильно отсортировать, единственный вариант который явно прокатил таков:

SELECT * FROM (

SELECT content_id, count( content_id ) AS vote_count, (SUM( value ) / count( content_id ) ) AS vote_result
FROM votingapi_vote
WHERE timestamp BETWEEN '1298869200' AND '1299387600'
GROUP BY content_id


) as voting
WHERE voting.vote_count > 1 AND voting.vote_result < 100
ORDER BY voting.vote_result DESC, voting.vote_count DESC
LIMIT 5

Но он больше похож на костыль нежели правильную сортировку, о правильной знаю наверняка, так как у меня есть ещё одна таблица кеша с результатами расчетов по общему числу голосов (без периода), так хранятся только данные средней суммы и количества голосов для каждого content_id, так вот там ORDER BY vote_result DESC, vote_count DESC работает наура.

Подскажите как всеже правильно сделать ORDER BY при таких условиях ???



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38081



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |