#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
помощью.