다음은 내 테이블얻기 hierarchieal 데이터 - 오라클
PARTY
ID, PARTY_ID, PARENT_ID
PARTY_PARTY
BUYER_ID, SUPPLIER_ID
PARTY
표는 구매자와 공급자 모두의 기록을 보유하고 있습니다. 구매자는 한 명 이상의 아동 구매자 (어린이 구매자가 PARENT_ID
란을 참조)를 갖게되며, 그 아동 구매자는 차례대로 아동 구매자를 가질 수 있습니다.
각 구매자는 하나 이상의 공급 업체를 보유 할 수도 있으며이 연결은 PARTY_PARTY
테이블에서 추적됩니다. 여기에서 BUYER_ID
열에는 구매자 ID가 저장되고 열에는 공급 업체 ID가 저장됩니다.
나는 주어진 구매자 상기 구매자의 모든 공급 업체를 얻기
SELECT ID FROM party START WITH party_id = 'BUYERX' CONNECT BY PRIOR ID = parent_id;
을 모든 계층 구매자를 얻기이
같은 모든 구매자와 주어진 구매자의 공급을받을 수 있어요
SELECT ID
FROM party
WHERE ID IN (
SELECT SUPPLIER_ID
FROM party_party
WHERE BUYER_ID IN (
SELECT ID
FROM party START WITH party_id = 'BUYERX' CONNECT BY PRIOR ID = parent_id
)
)
하지만 문제는 다음과 같습니다. 결과적인 공급 업체가 다른 공급자를위한 구매자. 이 경우 구매자와 구매자가 모두 구매자로 참여하는 구매자와 공급 업체를 어떻게 얻을 수 있습니까?
조회수 나 절차를 사용하고 싶지 않습니다.
샘플 데이터
PARTY
ID, PARTY_ID, PARENT_ID
1, BX, NULL
2, BY, 1
3, BZ, 1
4, SA, NULL
5, SB, NULL
6, SC, NULL
7, SD, NULL
8, SE, NULL
9, SF, NULL
PARTY_PARTY
BUYER_ID, SUPPLIER_ID
1, 4
2, 5
3, 6
6, 7
6, 8
8, 9
샘플 데이터에 대한 쿼리 결과가 예상 한 결과인지 확인하려면 수정 된 답변을 확인하십시오. –