여러 수준의 상위, 하위 레코드에서 최상위 루트 수준 상위 레코드를 얻기 위해 Oracle SQL 문을 작성하려고합니다. 테이블 구조는 아래와 같습니다. 아래의 최상위 루트 부모는 parent_membership_id 53887이며,이 부모 레코드에는 다른 자식에 대한 부모 인 여러 자식이 있습니다. 내가 원하는 것은 쿼리가 200326의 멤버를 말하고, 쿼리가 루트 멤버 53887을 다시 불러 오거나 쿼리 200322에 루트 멤버 53887을 얻는 쿼리입니다. 내가 뭘 하려는지 알 것 같아요. 고마워요.다수의 부모/자식 레코드에서 Oracle SQL 최상위 부모 레코드 얻기
CREATE TABLE MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID NUMBER(10) NOT NULL,
CHILD_MEMBERSHIP_ID NUMBER(10) NOT NULL,
PARENT_MEMBERSHIP_ID NUMBER(10) NOT NULL);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(35, 53890, 53887);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24475, 200322, 53887);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24476, 200322, 53887);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(34, 53889, 53888);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(5941, 112177, 53889);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(33, 53888, 53890);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24477, 200323, 200322);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24478, 200323, 200322);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24479, 200325, 200323);
Insert into MEMBERSHIP_LINK
(MEMBERSHIP_LINK_ID, CHILD_MEMBERSHIP_ID, PARENT_MEMBERSHIP_ID)
Values
(24480, 200326, 200323);
COMMIT;
'MEMBERSHIP_LINK_ID'의 24477과 24478은 같은 관계를 나타내는 것이 의도입니까? – Sentinel
부모 나 자식과 아무런 관련이없는 유일한 키 –
'MEMBERSHIP_LINK_ID'의 24477과 24478은 모두 'CHILD_MEMBERSHIP_ID'와 (과) 'PARENT_MEMBERSHIP_ID'(200323과 200322)가 동일하므로 'MEMBERSHIP_LINK_ID'의 24477과 24478이 같은 관계를 나타냅니다. – Sentinel