Существует сущность, называемая категорией, с точки зрения пользователя она может рассматриваться как каталог, этот каталог может содержать произвольное количество подкаталогов, которые, в свою очередь, могут иметь свои собственные подкаталоги и так далее, и тому подобное. Так что это простое дерево каталогов. Что мне нужно, так это с учетом идентификатора dirs (категории) найти всех его дочерних элементов, то есть все те подкатегории n-го уровня, содержащиеся в данной категории.
id|name |parentCategoryId|userId|
--|---------------------|----------------|------|
85|ToDo | | 7|
95|plans for the weekend| 85| 7|
96|things to buy | 95| 7|
Учитывая id = 85, результат будет 95 и 96.
Я пробовал сделать это с помощью рекурсивного подхода, но это не сработало.
EDIT:
with recursive subcategories as (
select id, "name", "parentCategoryId"
from category c2
where id = 85
union
select c3.id, c3."name", c3."parentCategoryId"
from category c3
inner join subcategories subs on subs."id" = subs."parentCategoryId"
) select * from subcategories
Я пробовал это, но я, кажется, не понимаю, как именно работает эта функция ... теперь она просто возвращает это:
id|name|parentCategoryId|
--|----|----------------|
85|ToDo| |