Выборка товаров по вложенным категориям
Необходимо провести выборку по вложенным категориям
catalog
-adidas
--shoes
---sneakers
-nike
--shoes
---sneakers
....
если передаю в get параметре catalog нужно вывести все вложенные товары, если shoes все его вложенные товары и тд.
SELECT p.name, p.category_id FROM `products` as p
where p.category_id in (select c.id from `category` as c where c.alias = 'catalog')
or p.category_id in (
select c.id
from `category` as c
where c.parent_id = (
select c.id
from `category` as c
where c.alias = 'catalog'
)
)
этот код работает, но мне код не нравится. можно ли его улучшить?
Ответы (1 шт):
Автор решения: borzz.one
→ Ссылка
Теперь я доволен и кодом и выводом.
with recursive cte (id) as (
select id
from category
where alias = 'catalog'
union all
select c.id
from category as c
inner join cte
on c.parent_id = cte.id
)
select * from products where category_id in (select * from cte);
Благодарю @Akina