在表的层次结构中查找所有元素

时间:2020-09-20 04:55:41

标签: postgresql recursive-query

我有两个表tree_catalogtree_catalog_linktree_catalog具有所有目录的条目,但是在某些用例中,我将目录彼此链接。简而言之,目录可以由不同的所有者链接。因此,假设用户A有3个目录(可以位于层次结构A-->C, B中),那么我可以为另一个用户B链接所有这些目录。它将遵循相同的层次结构。因此,目录C是目录A的子级。 现在,当我将所有目录链接到UserB时,仅目录A和目录B条目将插入数据库中。目录C应该从层次结构中自动获取。

tree_catalog_link中,parentId和childId是来自tree_catalog的引用。

我需要帮助。 我需要遍历version 1

我已经尝试了下面两个查询,但是没有提供所需的输出。

select * from public.tree_catalog_link t1
join public.tree_catalog_link t2 on t1."parentId" = t2."childId" OR t1."parentId" = 1
where t2."accountId" = 8 ;


select * from public.tree_catalog_link tcl1
left join public.tree_catalog_link tcl2 on tcl2."childId" = tcl1."parentId"
left join public.tree_catalog tc1 on tcl2."childId" = tc1."id"
where tc1."ownerId" = 8;

通俗地说,链接是

accountId = 8,
catalog of account 8 = 9
catalog 9 is linked from catalog 2,3
catalog 2 has catalog 1 at root level
catalog 3 has catalog 6 inside it
catalog 7 has catalog 7 inside it.

在这里,我正在寻找accountId = 8的所有目录。预期的输出是目录9、2、3、1、6、7。

第一张图片为tree_catalog,第二张图片为tree_catalog_link

tree catalog db table tree catalog link db table

0 个答案:

没有答案