gikami
@gikami
web программист

Как выводить записи из базы учитывая 2 переменные, количество оценок и саму оценку?

Вырываю пример из контекста. Помимо этого есть еще критерии отбора, но интересует вопрос по логике вывода по оценкам.
В данном случае у нас 2 переменные количество и среднее число этих оценок.
При выводе есть проблема, например между оценкой (5 из 5 с кол-ом 1) и (4.1 из 5 с кол-ом 30), выведет ту что 5 из 5.
Понятное дело, потому что оно выше стоит в ORDER BY, но как сделать чтобы учитывалось и количество? Ведь 30 оценок популярнее чем 1 оценка, хоть и среднее число отличается.
Не знаю как забить в инете запрос, куда вообще смотреть?
Может как-то использовать MAX?
SELECT *
   FROM posts 
   //Среднее число
   INNER JOIN postmeta AS rating
   ON ( posts.ID = rating.post_id )
   //Количество оценок
   INNER JOIN postmeta AS rating_count
   ON ( gikami_posts.ID = rating_count.post_id )
WHERE
   (rating.meta_key = 'rating' AND rating.meta_value <> 0) AND 
   (rating_count.meta_key = 'rating_count' AND rating_count.meta_value <> 0)
GROUP BY posts.ID
ORDER BY
   //Вот здесь надо как то изменить
   rating.meta_value DESC , 
   rating_count.meta_value DESC ,
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
LaRN
@LaRN
Senior Developer
А прост среднее через sum(rating.meta_value*rating_count.meta_value)/sum(rating_count.meta_value) не поможет?
Группировку делать как и сейчас по posts.ID.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы