Мне нужно найти все категории на текущем уровне или ниже, в которых есть предметы или есть подкатегории с предметами.Категории имеют CategoryID, ParentCategoryID.У предметов есть CategoryID.
У меня большая часть решения с использованием хранимой процедуры:
AS
WITH get_cat_hier
AS
(
Select e.CategoryID, e.ParentCategoryID, From Categories AS e
where e.ParentCategoryId = @ParentCategoryId
union ALL
Select e.CategoryID, e.ParentCategoryID, From Categories e
inner join get_cat_hier AS ecte on ecte.CategoryID = e.ParentCategoryID
)
select DISTINCT e.CategoryID from Categories as e
inner join items as item on (item.CategoryID = e.CategoryID) -- *******Problem*****
where
(e.CategoryID in (select CategoryID FROM get_cat_hier AS CategoryID)
)
К сожалению, это возвращает только категории с элементами, а не категории с подкатегориями с элементами,Мне нужно как-то заменить "item.CategoryID = e.CategoryID
" рекурсивным вызовом.