0

我有一个父子层次结构,如图所示。顶部有一个总公司,作为总公司。其他节点是子分支。可以有任意数量的区域区域,并且可以将任意数量的分区区域添加到区域区域。类似地,可以将任意数量的子分支添加到分区区域。在这里,所有级别都提供了用户登录,我在仅显示当前登录用户分支的子分支时遇到了困难。我使用的数据库是'Postgresql8.4'。通过谷歌搜索,我发现recursion可以做到。但坦率地说,我不明白其中大多数所遵循的步骤。那么有人可以帮助我解决这个难题并解释所遵循的步骤吗?

在此处输入图像描述

User Table
============
usr_id;     //Unique id of user
usr_branch_id;  //Id from the branch table


Branch Table
============
branch_id;  //Unique id of branch
branch_text_id;
branch_name;
branch_parent;
4

1 回答 1

1

你会想要这样的东西:

 WITH RECURSIVE branch_tree AS (
         select branch_id, branch_text_id, branch_name, branch_parent, 
                branch_id::text as path
           from branch
          where branch_parent is null
      union all
         select b.branch_id, b.branc_text_id, b.branch_name, b.branch_parent, 
                t.path || ',' || b.branch_id::text 
           FROM branch b
           JOIN branch_tree t ON b.parent_id = t.branch_id
 )
 SELECT * FROM branch_tree ORDER BY string_to_array(path, ',')::int[]; 
于 2013-11-23T05:55:35.943 回答