階層問い合わせ

親組織コードのついた組織テーブルで、ある組織コード以下をすべて取得する SQL 文です。(階層問い合わせを使っています。)

組織テーブルを作ります。

CREATE TABLE DIR
(
    DCD                            VARCHAR2(10) NOT NULL,
    PCD                            VARCHAR2(10),
    DNAME                          VARCHAR2(30)
)
/
COMMENT ON COLUMN DIR.DCD IS '組織コード'
/
COMMENT ON COLUMN DIR.PCD IS '親組織コード'
/
COMMENT ON COLUMN DIR.DNAME IS '組織名称'
/

データを入力します

INSERT INTO DIR (DCD, PCD, DNAME) VALUES('0000',NULL,'組織0000');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('A100','0000','組織A100');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('A110','A100','組織A110');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('A111','A110','組織A111');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('A111-1','A111','組織A111-1');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('A111-2','A111','組織A111-2');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('B100','0000','組織B100');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('B110','B100','組織B110');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('B111','B110','組織B111');
INSERT INTO DIR (DCD, PCD, DNAME) VALUES('C100','0000','組織C100');

※ 以下のような構造の組織です

      +- A100 - A110 - A111 + A111-1
      |                     |
      |                     + A111-2
0000 -+- B100 - B110 - B111
      |
      +- C100

A100 以下の組織を取得

select * from DIR
start with DCD='A100'
connect by prior DCD = PCD
/
DCD        PCD        DNAME
---------- ---------- ---------------------
A100       0000       組織A100
A110       A100       組織A110
A111       A110       組織A111
A111-1     A111       組織A111-1
A111-2     A111       組織A111-2

A110 以下の組織を取得

select * from DIR
start with DCD='A110'
connect by prior DCD = PCD
/
DCD        PCD        DNAME
---------- ---------- ---------------------
A110       A100       組織A110
A111       A110       組織A111
A111-1     A111       組織A111-1
A111-2     A111       組織A111-2

0000 以下の組織を取得

select * from DIR
start with DCD='0000'
connect by prior DCD = PCD
/
DCD        PCD        DNAME
---------- ---------- ---------------------
0000                  組織0000
A100       0000       組織A100
A110       A100       組織A110
A111       A110       組織A111
A111-1     A111       組織A111-1
A111-2     A111       組織A111-2
B100       0000       組織B100
B110       B100       組織B110
B111       B110       組織B111
C100       0000       組織C100
選択肢 投票
参考になった 5  
参考にならなかった 1  


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-20 (水) 11:15:30 (3540d)