dzheka3d
@dzheka3d

Как подставить к запросу данные из самого запроса?

Всем привет! Вывожу список категорий и хочу рядом с каждой категорией вывести количество записей. Но с учетом того, что в категории могут быть подкатегории... Поэтому выводить количество нужно с учетом тех записей, которые находятся в подкатегорииях.
В БД вместе с записью хранится id категории в которой она находится непосредственно, и также дерево категорий в котором она находится.
Для примера можно глянуть вывод категорий на авито: https://www.avito.ru/rossiya/transport

Так вот, у меня получается вот такой запрос к БД
$cat_path - дерево катгорий в котором находимся сейчас
$last_category - категория, для которой ищем дочерние категории
SELECT sc.`name`, sc.`basename`, (SELECT count(`id`) cnt FROM `sale_ads` WHERE `path` LIKE '{$cat_path}%') cnt
FROM `sale_category` sc 
WHERE sc.`parent_id` = '{$last_category}' 
ORDER BY sc.`order_sort` ASC


Проблема возникает на этом участке: LIKE '{$cat_path}%'
Количество выводится для текущей категории, а не для каждой дочерней. Поэтому нужно подставить сюда значение текущей категории в выборке, как-то так LIKE '{$cat_path},sc.`id`%'

Но такая запись не работает.
Как подставить это значение правильно? Или может посоветуйте более правильную логику подсчета записей...
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
@asmodeusta
PHP Developer (Laravel, Wordpress)
Я так понимаю что у каждой строки категории есть id родительской категории? Если так тогда нужно строить условие на подобии:
SELECT table.name, table.basename, count(category.id)
FROM table
LEFT JOIN category
ON table.category_id = category.id
OR table.category_id = category.parent_id
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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