@Lobanov

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

Парни, привет!

Столкнулся с проблемкой, не могу получить весь список категорий и подкатегорий, которые относятся непосредственно к компании.

Структура БД следующая:
categories - таблица категорий
category_id - int
category_title - varchar (150)
parent - int (если это дочерняя категория, то пишется ID родителя, иначе тут лежит 0)

company_categories - таблица в которую записываются категории, относящиеся к компании
category_id - int
company_id - int

companies - таблица с данными компании
id - int
name - varchar(150)
и т.д.

Суть в том, что при заходе на страницу компании, в URL лежит ID компании, мне нужно выдернуть все категории, к которым относится эта компания, а также их родителей, чтобы получился следующий вид:

Категория
-Подкатегория
--Подкатегория
Еще одна категория
-Еще одна подкатегория
--Еще одна подкатегория
Третья категория

---------------------------------------
Пытался сделать следующий запрос:
SELECT
`cat`.`category_id`,
`cat`.`category_title`
FROM
`company_categories` AS `comp_cat`
JOIN
`companies` AS `company`
JOIN
`categories` AS `cat`
WHERE
`comp_cat`.`category_id`=`cat`.`category_id`
AND `comp_cat`.`company_id`=`company`.`company_id`
AND `company`.`company_id`=1

но этот запрос выводит только дочерние категории, к которым относится компания.
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
Если вы указываете в company_categories только категорию последнего уровня, то обычным запросом вытащить не удастся. Можно сделать рекурсивный запрос с помощью хранимой процедуры, пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы