@kirill-93

Можно ли в mysql сортировать по количеству записей?

Здравствуйте, скажите пожалуйста, можно ли на уровне запроса сортировать данные?
Запрос такого вида:
SELECT * FROM category LEFT JOIN product ON category.id = product.category_id WHERE category.id IN (1,2,3...)

В результате нужно получить вывод информации в виде "Категория1 -> продукт1, продукт2, продукт3..., Категория2 -> продукт1, продукт2...". Но категории должны сортироваться по количеству продуктов в них, то есть категория, в которой больше всего товаров - первая, в которой меньше всего - последняя
  • Вопрос задан
  • 4400 просмотров
Пригласить эксперта
Ответы на вопрос 4
jawakharlal
@jawakharlal
order by category
Ответ написан
Комментировать
Zhuravljov
@Zhuravljov
php-программист
Да, это возможно.
Запрос должен получиться типа этого:
SELECT category.name, GROUP_CONCAT(product.name)
FROM category
LEFT JOIN product ON category.id = product.category_id
GROUP BY category.id
ORDER BY COUNT(product.id) DESC
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Думаю что можно извратиться и запихать это в один запрос, но это абсолютно не правильно с точки зрения быстродействия.
Правильно - кешировать в категории количество товаров в отдельном поле.
Обновлять это поле когда изменяется категория у товара.
Запрос получается простой и легкий.

PS Не используёте звездочку когда у Вас идет запрос к нескольким таблицам, это потенциально источник кучи проблем.
Ответ написан
Комментировать
KorsaR-ZN
@KorsaR-ZN
Сделайте дополнительную вуборку через join, которая вернет кол-во по условию, и по этому значению уже остортируете...
Ответ написан
Ваш ответ на вопрос

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

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