Сортировка товаров по количеству отзывов

#php #mysql #sorting

#php #mysql #сортировка

Вопрос:

У меня есть база данных mysql с

  • таблица «продукт», содержащая столбцы «product_id», «название», «цена»
  • таблица «обзор», содержащая столбцы «review_id», «product_id», «review_content»

Я хочу получить результаты для ‘product_id’ = 123, но отсортировать по количеству отзывов. Я могу найти количество отзывов для конкретного продукта, используя COUNT (‘review_id’), но как мне отсортировать результаты по количеству отзывов?

Ответ №1:

Поскольку вы, предположительно, выбираете COUNT('review_id') в своем запросе, вы можете просто добавить ORDER BY COUNT('review_id') DESC в конце.

Ответ №2:

Попробуйте это, чтобы получить все товары и количество отзывов по каждому:

 SELECT P.*, IFNULL(COUNT(R.product_ID),0) AS NumReviews
FROM Product AS P
LEFT JOIN Review AS R ON R.product_id = p.product_id
ORDER BY  COUNT(R.product_ID) DESC
  

Ответ №3:

Для экономии при повторном подсчете используйте: count('review_id') as num_reviews и затем order by num_reviews

Ответ №4:

Если вам нужны товары с наибольшим количеством отзывов в первую очередь…

 SELECT P.product_id, 
       IFNULL(COUNT(R.product_ID),0) as "Reviews"
FROM product as P
LEFT JOIN review as R ON P.product_ID = R.product_id
GROUP BY P.product_id
ORDER BY Review DESC;
  

…в противном случае переключитесь DESC с ASC помощью.