私は3つのテーブルを持っています。ユーザーとそのユーザーに割り当てられている要素が含まれています。表DDLはこのように見えます。複数の条件で階層を結合する
CREATE TABLE FSECURE
( "USERID" VARCHAR2(100 BYTE),
"F_ELEMENT" VARCHAR2(6 BYTE),
"O_ELEMENT" VARCHAR2(20 BYTE),
"TYPE" VARCHAR2(20 BYTE)
);
テーブルに含まれるデータは次のようになります。
REM INSERTING into FSECURE
SET DEFINE OFF;
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('FFA','140','2003','APP1');
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('FFA','280','2003','APP1');
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('GGA','202118','2003','APP2');
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('GGA','140','2004','APP2');
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('RFA','202116','3662','APP3');
Insert into FSECURE (USERID,F_ELEMENT,O_ELEMENT,TYPE) values ('FFA','110001','3662','APP3');
fvol
テーブルはf_secureテーブルのo_element列への参照を含みます。
CREATE TABLE FVOL
( "ORG" VARCHAR2(6 BYTE),
"ORG_PRED" VARCHAR2(6 BYTE)
);
REM INSERTING into FVOL
SET DEFINE OFF;
Insert into FVOL (ORG,ORG_PRED) values ('2003',null);
Insert into FVOL (ORG,ORG_PRED) values ('3661','2003');
Insert into FVOL (ORG,ORG_PRED) values ('3662','2003');
Insert into FVOL (ORG,ORG_PRED) values ('2009',null);
Insert into FVOL (ORG,ORG_PRED) values ('366X','2009');
Insert into FVOL (ORG,ORG_PRED) values ('366P','2009');
Insert into FVOL (ORG,ORG_PRED) values ('2004',null);
Insert into FVOL (ORG,ORG_PRED) values ('1114','2004');
Insert into FVOL (ORG,ORG_PRED) values ('2224','2004');
fval
テーブルはfsecureテーブル内f_elementへの参照を含みます。
CREATE TABLE "FVAL"
( "FUND" VARCHAR2(6 BYTE),
"FUND_PRED" VARCHAR2(6 BYTE)
);
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');
Insert into FVAL (FUND,FUND_PRED) values ('110001','11000');
Insert into FVAL (FUND,FUND_PRED) values ('110002','11000');
私が抱えている問題は、私は ユーザによって階層を横断する必要があることである - f_element - o_element - で階層ノードを有するUSER_ID FFA
の場合に例えばだからタイプ
fsecure
F_ELEMENT = '140'
とO_ELEMENT = '2003'
として表し、ちょうどその行のTYPE APP1
私は サンプル出力を取得する必要があります。
FUND: ORG: TYPE:
20001 3661 APP1
20002 3661 APP1
20003 3661 APP1
202118 3661 AAP1
20001 3662 AAP1
20002 3662 AAP1
20003 3663 APP1
202118 3663 AAP1
110001 3662 AAP3
問題は、階層型、ユーザーID、f_element、o_elementを走査していることです。私は階層をたどることができますが、私は要素を組み合わせることなくどのようにそれを行うかについての精神的なブロックを持っています。 Note: FFA USER FOR APP3は、その行の一部として140と2003を持たないため、1つのf_elementとo_elementを取得します。
おかげで、あなたの出力をラメシュ右に見えますが、あなたが投稿したクエリは、私はそれを実行することを出力しません。データを変更しましたか?おそらく私は何かを失っている前に残念です。 – Miguel
@Miguel - 私がやった唯一の変更は、レコードの1つでNULLの周りの引用符を削除することでした。データも同様に投稿してください。これが機能するかどうかを教えてください。 SQL Fiddleのデモも含まれています - http://sqlfiddle.com/#!4/a2a751/23 – Ramesh
あなたは男です!これは魅力のように機能します。ありがとうございました ! – Miguel