6

我正在使用火鸟 2.1。有一个表名Folders,字段:

  • 文件夹ID
  • 父文件夹 ID
  • 文件夹名称

ParentFolderID如果它是根文件夹,则为 -1 - 否则它包含父文件夹的 ID。

如何找到低级节点的所有父节点(直到根文件夹)?

我需要递归查询吗?(火鸟支持他们

4

1 回答 1

9

像这样的东西:

WITH RECURSIVE hierarchy (folderid, ParentFolderId, FolderName) as (
   SELECT folderid, ParentFolderId, FolderName
   FROM folders
   WHERE ParentFolderID = -1

   UNION ALL

   SELECT folderid, ParentFolderId, FolderName
   FROM folders f
     JOIN hierarchy p ON p.folderID = f.parentFolderID
)
SELECT *
FROM hierarchy

编辑:以下查询将“向上”遍历层次结构,查找给定文件夹的所有父级。

WITH RECURSIVE hierarchy (folderid, ParentFolderId, FolderName) as (
   SELECT folderid, ParentFolderId, FolderName
   FROM folders
   WHERE folderid = 42

   UNION ALL

   SELECT folderid, ParentFolderId, FolderName
   FROM folders f
     JOIN hierarchy p ON p.parentFolderID = f.folderID
)
SELECT *
FROM hierarchy
于 2011-07-05T17:23:00.537 回答