0

写真のように描かれている親子階層があります。最上部には親支店として機能する本社が 1 つあります。他のノードは子ブランチです。地域ゾーンはいくつでも作成でき、地域ゾーンにはいくつでも分割ゾーンを追加できます。同様に、任意の数の子ブランチを分割ゾーンに追加できます。ここでは、ユーザー ログインがすべてのレベルで提供されており、現在ログインしているユーザー ブランチの子であるブランチのみを表示するのが困難です。私が使用しているデータベースは「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 に答える