본문 바로가기

START WITH CONNECT BY PRIOR

I. Oracle에서의 SYS_CONNECT_BY_PATH 사용 목적과 흉내내기 I. Oracle에서의 SYS_CONNECT_BY_PATH 사용 목적과 흉내내기 부모-자식의 관계가 있는 데이터, 특히 BOM, 사원정보 및 계층형 분류를 출력함에 있어서 최종 노드로부터 최상위 노드까지의 모든 노드의 데이터를 구분자를 이용하여 출력하기 위해 사용됩니다. 앞으로 제시할 방법은 말 그대로 흉내내기 입니다. 오라클의 계층형 함수는 다양한 형태로 사용될 수 있기 때문에 SQL만으로는 복잡한 쿼리문에 사용되는 함수형태로 구현하기는 어렵습니다. 단지, 계층형 구조 데이터를 오라클의 SYS_CONNECT_BY_PATH와 유사한 결과물을 표현하는 데 목적이 있다면 제가 소개하는 방법만으로도 충분할 것입니다. 언젠가는 CUBRID에서도 계층형 함수가 제공될 것으로 생각됩니다만, 그 전까지는 부족하나마 .. 더보기
[ORACLE]START WITH ~ CONNECT BY PRIOR 작성하신 쿼리는 정상 수행됩니다. 1. START WITH는 처음 시작할 조건을 의미합니다. 즉, '1007' 이면서 'Y'인 로우부터 출발합니다. 2. CONNECT BY는 1.의 데이터와 연결된 로우를 반복하여 찾습니다. PRIOR 과 가까운 쪽의 컬럼(EMP_ID)이 '1007'의 컬럼이고, 반대쪽이 다른 로우의 컬럼입니다. 즉, 나의 EMP_ID ('1007')를 manager_emp_id 로 갖는 로우를 찾는 것입니다. (내 부하직원) 쉽게 생각해 Prior쪽의 컬럼이 하위이면 밑으로, 상위코드이면 위로 찾는 구조입니다. CONNECT BY와 START WITH의 순서는 의미가 없습니다. (AND가 없을 때) 다만, AND의 위치가 FROM절, CONNECT BY, START WITH 다음의 어.. 더보기