Сначала вы должны получить все активные категории
SELECT child.*
FROM Categories child
JOIN Categories parent
ON child.parent_category_id = parent.category_id
AND parent.status = 1
Но вам также нужны корневые категории без parent_id
SELECT *
FROM Categories
WHERE parent_category_id IS NULL
AND status = 1
Таким образом, вы ОБЪЕДИНЯЕТЕ оба
SELECT *
FROM Categories child
JOIN Categories parent
ON child.parent_category_id = parent.category_id
AND parent.status = 1
UNION ALL
SELECT *
FROM Categories
WHERE parent_category_id IS NULL
AND status = 1
Теперь вы получаете товары для этих категорий
SELECT *
FROM ( ... UNION ALL ... ) active_categories
JOIN Products
ON active_categories.category_id = Product.category_id