SELECT * from test_emp a FULL OUTER JOIN test_depart b ON a.depart_id = b.depart_id START WITH parent_id IS NULL CONNECT BY PRIOR b.depart_id = parent_id;
test_depart 테이블과 test_emp 테이블을 조인한 뒤
그 결과값으로 계층형 쿼리로 내보내고 싶었습니다.
그런데 위의 쿼리를 실행하면
'ORA-03113: end-of-file on communication channel' 에러가 발생합니다.
SELECT * from test_emp a FULL OUTER JOIN test_depart b
ON a.depart_id = b.depart_id
조인하는 이 부분만 사용시엔 데이터가 나옵니다.
총 52개의 데이터 중 48개는 조인된 사원정보,
나머지 4건은 사원이 없는 상위 부서라 사원정보란은 NULL값이 나옵니다.
parent_id가 NULL것은 최상위부서 1개 밖에 없습니다.
== 테이블 형태
test_emp : EMP_ID, EMP_NAME, DEPART_ID
(사원 테이블 : 사원번호, 사원이름, 부서번호)
test_depart : DEPART_ID, DEPART_NAME, PARENT_ID
(부서 테이블 : 부서번호, 부서이름, 상위부서 번호)
===========
최상위계층
2레벨
3레벨 사원정보
3레벨 사원정보
3레벨 사원정보
2레벨
3레벨 사원정보
3레벨 사원정보
3레벨 사원정보
4레벨 사원정보
4레벨 사원정보
2레벨
3레벨 사원정보
3레벨 사원정보
3레벨 사원정보
4레벨 사원정보
4레벨 사원정보
=============
대강 이런 순으로 나오게 할 생각입니다.
이 데이터를 계층형쿼리로 부서계층별로 사원들을 출력을 해보고싶은데
생각지 못한 에러가 발생합니다.
어떤 문제가 있는지 확인부탁드립니다.
계층구조는 사원이 아닌 부서입니다.
부서만 계층쿼리 한뒤에 사원을 조인하세요.
조인은 왜? 풀조인인가요?
SELECT a.parent_id , a.depart_id , a.depart_name , b.emp_id , b.emp_name FROM (SELECT parent_id , depart_id , depart_name , ROWNUM rn FROM test_depart START WITH parent_id IS NULL CONNECT BY PRIOR depart_id = parent_id ) a LEFT OUTER JOIN test_emp b ON a.depart_id = b.depart_id ORDER BY a.rn, b.emp_id ;