ユーザーIDを持つテーブルと、階層要素を持つテーブルがあります。ユーザーIDを持つ表には、階層要素を持つ表に対する固有のキーがあります。私が達成しようとしているのは、ユーザごとに 階層テーブルのすべての要素を表示することです。問題は、私が横断して表示する必要がある階層ノードがあることです。使用しているテーブルと使用しているデータの例を以下に示します。階層継承によるクエリ
create table fsecure(
userid varchar(100),
f_element varchar(6)
);
REM INSERTING into FSECURE
SET DEFINE OFF;
Insert into FSECURE (USERID,F_ELEMENT) values ('FFA','140');
Insert into FSECURE (USERID,F_ELEMENT) values ('FFA','280');
Insert into FSECURE (USERID,F_ELEMENT) values ('GGA','202118');
Insert into FSECURE (USERID,F_ELEMENT) values ('GGA','140');
Insert into FSECURE (USERID,F_ELEMENT) values ('RFA','202116');
CREATE TABLE "FVAL"
("FUND" VARCHAR2(6),
"FUND_PRED" VARCHAR2(6)
)
REM INSERTING into FVAL
SET DEFINE OFF;
Insert into FVAL (FUND,FUND_PRED) values ('140',null);
Insert into FVAL (FUND,FUND_PRED) values ('280',null);
Insert into FVAL (FUND,FUND_PRED) values ('2000','140');
Insert into FVAL (FUND,FUND_PRED) values ('20001','2000');
Insert into FVAL (FUND,FUND_PRED) values ('20002','2000');
Insert into FVAL (FUND,FUND_PRED) values ('20003','2000');
Insert into FVAL (FUND,FUND_PRED) values ('202118','2000');
Insert into FVAL (FUND,FUND_PRED) values ('2800','280');
Insert into FVAL (FUND,FUND_PRED) values ('280001','2800');
Insert into FVAL (FUND,FUND_PRED) values ('280002','2800');
Insert into FVAL (FUND,FUND_PRED) values ('280003','2800');
Insert into FVAL (FUND,FUND_PRED) values ('280004','2800');
ここでは、私があなたのためにこれをやっているときに働くクエリです。
SELECT F.FUND
FROM FVAL F
CONNECT BY PRIOR F.FUND = F.FUND_PRED
START WITH F.FUND IN (SELECT F_ELEMENT FROM FSECURE WHERE USERID = 'FFA');
これは、すべてのユーザーがfsecureから要素を表示するのに十分な汎用性を持たせたいと考えています。
予想出力(注:私は一人のユーザーを示していますが、私は、テーブルfsecure上のすべてのユーザーのためにこれを行うしたいと思います)
"FUND" "'FFA'"
"140" "FFA"
"2000" "FFA"
"20001" "FFA"
"20002" "FFA"
"20003" "FFA"
"202118" "FFA"
"280" "FFA"
"2800" "FFA"
"280001" "FFA"
"280002" "FFA"
"280003" "FFA"
"280004" "FFA"
任意の助けいただければ幸いです。
DDLステートメントを提供していただき、ありがとうございます。 * {: - D – Boneist