너무 초보라 뭐라고 검색해야 될지도 몰라서 질문을 쓰게되네요
ID P
1
2
3 1
4 2
5
6
7 1
8 2
9 2
위와 같은테이블에서
P 칼럼이 null이 아닌 ID 3 4 7 8 9 를 제외하고
P 칼럼에 있는 ID 1 2 도 제외하고 싶습니다
한마디로 계단식이고 자식이 있거나 부모가 있는 ID 를 제외한 5 6 만 조회하고 싶어요...
도와주셔서 감사합니다.
예시자료는 계층 구조가 2단계까지만 표현되어 있는데. 실제로는 어떤가요? 2단계까지만 있나요? 더 내려갈 수도 있나요? 2단계 뿐이라면 다음과 같이 테이블 한번만 읽고 가능합니다.
SELECT NVL(p, id) id FROM t GROUP BY NVL(p, id) HAVING COUNT(*) = 1 ;
여러 단계로 내려가는 구조라면 계층구조로 전개하던가 테이블 두번 읽어 처리하던가 해야겠네요.
SELECT id FROM t WHERE p IS NULL AND CONNECT_BY_ISLEAF = 1 START WITH p IS NULL CONNECT BY PRIOR id = p ;
SELECT id FROM t WHERE p IS NULL MINUS SELECT p FROM t WHERE p IS NOT NULL ;
SELECT id FROM t WHERE p IS NULL AND id NOT IN (SELECT p FROM t WHERE p IS NOT NULL) ;
SELECT id FROM t a WHERE p IS NULL AND NOT EXISTS (SELECT p FROM t WHERE p = a.id) ;
SELECT a.id FROM t a , t b WHERE a.p IS NULL AND a.id = b.p(+) AND b.id IS NULL ;
감사합니다~!!!