반응형
Oracle SQL에서 Connect by
다음 표가 있다고 가정합니다.
create table Employee(
2 EMPNO NUMBER(3),
3 ENAME VARCHAR2(15 BYTE),
4 HIREDATE DATE,
5 ORIG_SALARY NUMBER(6),
6 CURR_SALARY NUMBER(6),
7 REGION VARCHAR2(1 BYTE),
8 MANAGER_ID NUMBER(3)
9 )
그리고.
create table job (
2 EMPNO NUMBER(3),
3 jobtitle VARCHAR2(20 BYTE)
4 )
5 /
아래 쿼리가 하는 일에 관심이 있습니다.
SELECT empno, manager_id, ename
2 FROM employee
3 START WITH empno = 1
4 CONNECT BY PRIOR empno = manager_id;
이 코드는 다음을 선택합니다.empno
,manager_id
,ename
종업원으로부터, 그것은 이 행으로부터 선택을 시작합니다.empno=1
, 그러나 이 행이 무엇을 하는지 이해할 수 없었습니다.
CONNECT BY PRIOR empno = manager_id;
다음과 같습니까?
where empno=manager_id?
CONNECT BY PRIOR empno = manager_id;
이렇게 하면 재귀가 발생합니다.다음 하위 계층 레벨의 일부인 모든 레코드가 반환됩니다.이렇게 하면 모든 관리자와 해당 관리자가 일하는 부하 직원들에게 위에서 아래로 계층이 반환됩니다.
30 (manager_id)
12
5 (manager_id)
1
7
20 (manager_id)
15
10
쿼리는 재귀적이며, 직원 #1(CEO일 가능성이 높음)에서 시작하여 모든 부하 직원을 재귀적으로 인쇄한 다음(모든 직원이 인쇄될 때까지) 모든 부하 직원을 재귀적으로 인쇄합니다.
"START WITH"와 "CONNECT BY"에 대한 좋은 설명은 여기에서 확인할 수 있습니다.
언급URL : https://stackoverflow.com/questions/11132375/connect-by-in-oracle-sql
반응형
'programing' 카테고리의 다른 글
요즘 DHTML을 뭐라고 부르나요? (0) | 2023.09.27 |
---|---|
mysql 인덱스가 메모리에 완전히 맞는지 확인하는 방법 (0) | 2023.09.27 |
브라우저 크기가 줄어들면 워드프레스 웹사이트의 탐색을 확장할 수 없습니다. (0) | 2023.09.27 |
jQuery에서 두 클래스를 전환하는 가장 쉬운 방법 (0) | 2023.09.27 |
PHP에서 오브젝트를 캐스트하는 방법 (0) | 2023.09.27 |