Oracle 재 귀 트 리 구조 조회 기능

Oacle 트 리 구조 조 회 는 바로 차원 재 귀 조회 로 sql 문 구 를 자주 사용 하 는 것 으로 실제 개발 에서 조직 구조 실현 과 차원 화 실현 기능 도 자주 볼 수 있다.
개요:나무 모양 구 조 는 보통 뿌리 노드,부모 노드,하위 노드 와 잎 노드 로 구성 되 어 있 습 니 다.쉽게 말 하면 한 장의 표 에 두 개의 필드 가 존재 합 니 다.deptid,par_dept_id,그러면 모든 기록 의 아버지 급 id 를 찾 으 면 하나의 나무 모양 구 조 를 형성 할 수 있 습 니 다.즉,par_dept_id( )=dept_id( ), 통속 적 으로 이 기록 의 par 입 니 다.dept_id 는 다른 기록 입 니 다.즉,아버지 급 dept 입 니 다.id,그 트 리 구조 등급 조회 의 기본 문법 은:

  SELECT [LEVEL],*
  FEOM table_name
  START WITH   1
  CONNECT BY PRIOR   2
  WHERE   3
  ORDER BY     
설명:LEVEL--위조 열,나무의 층 차 를 나타 내 는 데 사용
조건 1--뿌리 노드 의 한정 조건 은 물론 권한 을 완화 하여 여러 개의 뿌리 노드,즉 여러 개의 나 무 를 얻 을 수 있 습 니 다.
조건 2-연결 조건,목적 은 부자 간 의 관계 가 무엇 인지,이 관계 에 따라 재 귀적 으로 조회 하 는 것 이다.
조건 3--필터 조건,되 돌아 오 는 모든 기록 을 필터 합 니 다.
정렬 필드---모든 반환 기록 을 정렬 합 니 다.
prior 에 대한 설명:필요 할 때 두 가지 표기 법 이 있 습 니 다.connect by prior dept_id=par_dept_id 또는 connect by dept_id=prior par_dept_id,앞의 표기 법 은 위 에서 아래로 검색 하 는 방식(먼저 부모 노드 를 찾 은 다음 에 하위 노드 를 찾 습 니 다)을 사용 하고 뒤의 표기 법 은 아래 에서 위로 검색 하 는 방식(먼저 잎 노드 를 찾 은 다음 에 부모 노드 를 찾 습 니 다)을 사용 합 니 다.
트 리 구조 차원 화 조 회 는 트 리 구조의 모든 노드 를 방문 해 야 하 며 중복 할 수 없습니다.그 방문 절 차 는 다음 과 같 습 니 다.

대체로 전체 트 리 구 조 를 스 캔 하 는 과정 은 나 무 를 옮 겨 다 니 는 과정 이 고 언어 로 설명 하면:
STEP 1:뿌리 노드 부터 시작 합 니 다.
단계 2:이 노드 에 접근 하기;
단계 3:이 노드 에 접근 하지 않 은 하위 노드 가 있 는 지 판단 하고 있 으 면 가장 왼쪽 에 접근 하지 않 은 하위 노드 로 전환 하고 두 번 째 단 계 를 실행 합 니 다.그렇지 않 으 면 네 번 째 단 계 를 실행 합 니 다.
단계 4:이 노드 가 루트 노드 라면 방문 이 완료 되 고 그렇지 않 으 면 다섯 번 째 단 계 를 실행 합 니 다.
단계 5:이 노드 의 부모 노드 로 돌아 가 세 번 째 절 차 를 실행 합 니 다.
이외에 sysconnect_by_path 함 수 는 connect by 와 함께 사용 되 며 실전 에서 구체 적 으로 목적 을 가지 고 구체 적 으로 소개 합 니 다!
실전:최근 에 프로젝트 를 하 는 조직 구조 에 대해 부서 의 각급 차원 에 따 르 면 이 부분 에 대한 파악 이 튼튼 하지 않 기 때문에 가장 멍청 한 like 모호 한 조회 로 해결 했다.기능 이 실현 되 었 지만 문제 가 매우 많다.만약 에 확장 성 이 좋 지 않 으 면 수 요 를 조금 만 바 꾸 면 크게 바 꾸 고 만족 하지 않 으 면 마지막 에 이 를 최적화 시 켰 다.개발 에서 데이터베이스 로 해결 할 수 있 는 것 은 자바 로 해결 하지 마 세 요.이것 도 제 가 유지 해 온 생각 이 고 견지 하고 있 습 니 다.
생 성 표:

create table SYS_DEPT 
 (
 dept_id   VARCHAR2(32) not null,
 dept_name  VARCHAR2(128),
 dept_code  VARCHAR2(32),
 par_dept_id  VARCHAR2(32),
 dept_leader  VARCHAR2(32),
 dept_desc  VARCHAR2(256),
 create_time  CHAR(19),
 org_id   VARCHAR2(32),
 dept_type  VARCHAR2(1),
 order_id  NUMBER,
 state   CHAR(1) default '1',
 bqq_dept_id  VARCHAR2(128),
 bqq_par_dept_id VARCHAR2(128)
 )
 -- Add comments to the table
 comment on table SYS_DEPT
 is '    ,      ';
 -- Add comments to the columns
 comment on column SYS_DEPT.dept_id
 is '  ';
 comment on column SYS_DEPT.dept_name
 is '  ';
 comment on column SYS_DEPT.dept_code
 is '  ,    ';
 comment on column SYS_DEPT.par_dept_id
 is '    ID';
 comment on column SYS_DEPT.dept_leader
 is '    ID';
 comment on column SYS_DEPT.dept_desc
 is '    ';
 comment on column SYS_DEPT.create_time
 is 'yyyy-mm-dd HHMMSS';
 comment on column SYS_DEPT.org_id
 is '  ID';
 comment on column SYS_DEPT.dept_type
 is '1:    ;2:    (       )';
 comment on column SYS_DEPT.order_id
 is '    ';
 comment on column SYS_DEPT.state
 is '0:  ;1:  ';
 comment on column SYS_DEPT.bqq_dept_id
 is '  qqdeptid';
 comment on column SYS_DEPT.bqq_par_dept_id
 is '  qq  deptid';
테스트 데이터 삽입:

insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('40288ac45a3c1e8b015a3c28b4ae01d6', '   ', '110', '-1', null, null, '2017-02-14 182625', '402881e54c40d74d014c40d8407a0016', '1', 29, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b60f98a1d59b3', '   ', '110001', '40288ac45a3c1e8b015a3c28b4ae01d6', null, null, '2017-04-12 150338', '402881e54c40d74d014c40d8407a0016', '1', 63, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6134d9ff2946', '    ', '110001001', '4028e4d35b5ca4ee015b60f98a1d59b3', null, null, '2017-04-12 160825', '402881e54c40d74d014c40d8407a0016', '1', 135, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b60f9fae95a44', '    ', '110002', '40288ac45a3c1e8b015a3c28b4ae01d6', null, null, '2017-04-12 150407', '402881e54c40d74d014c40d8407a0016', '1', 64, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613562be2a08', '   ', '110002001', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 160900', '402881e54c40d74d014c40d8407a0016', '1', 136, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6135f9de2aca', '    ', '110002002', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 160939', '402881e54c40d74d014c40d8407a0016', '1', 137, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6136a3e22bb2', '    ', '110002003', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161022', '402881e54c40d74d014c40d8407a0016', '1', 138, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613723bb2c5f', '     ', '110002004', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161055', '402881e54c40d74d014c40d8407a0016', '1', 139, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6137a5772d06', '    ', '110002005', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161128', '402881e54c40d74d014c40d8407a0016', '1', 140, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6137e4e72d57', '     ', '110002006', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161144', '402881e54c40d74d014c40d8407a0016', '1', 141, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613840112dd0', '      ', '110002007', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161208', '402881e54c40d74d014c40d8407a0016', '1', 142, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6138765c2e12', '    ', '110002008', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161221', '402881e54c40d74d014c40d8407a0016', '1', 143, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6138b84b2e68', '   ', '110002009', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161238', '402881e54c40d74d014c40d8407a0016', '1', 145, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6139390e2f06', '    ', '110002010', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161311', '402881e54c40d74d014c40d8407a0016', '1', 146, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613980a82f61', '    ', '110002011', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161330', '402881e54c40d74d014c40d8407a0016', '1', 147, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b6139c1dc2fb4', '    ', '110002012', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161346', '402881e54c40d74d014c40d8407a0016', '1', 148, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613a24853047', '     ', '110002013', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161412', '402881e54c40d74d014c40d8407a0016', '1', 149, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613a81f030ce', '        ', '110002014', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161436', '402881e54c40d74d014c40d8407a0016', '1', 150, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613ad627313d', '    ', '110002015', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161457', '402881e54c40d74d014c40d8407a0016', '1', 151, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613b394c31c6', '   ', '110002016', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161522', '402881e54c40d74d014c40d8407a0016', '1', 152, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613b9051325e', '     ', '110002017', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161545', '402881e54c40d74d014c40d8407a0016', '1', 153, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613c286b332e', '      (    ) ', '110002018', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161624', '402881e54c40d74d014c40d8407a0016', '1', 154, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613c806933a3', '      ', '110002019', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161646', '402881e54c40d74d014c40d8407a0016', '1', 155, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613cdf98342c', '    ', '110002020', '4028e4d35b5ca4ee015b60f9fae95a44', null, null, '2017-04-12 161711', '402881e54c40d74d014c40d8407a0016', '1', 157, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b60fa3e2f5a94', '    ', '110003', '40288ac45a3c1e8b015a3c28b4ae01d6', null, null, '2017-04-12 150424', '402881e54c40d74d014c40d8407a0016', '1', 65, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613d738d34f4', '      ', '110003001', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161748', '402881e54c40d74d014c40d8407a0016', '1', 158, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613defed359e', '     ', '110003002', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161820', '402881e54c40d74d014c40d8407a0016', '1', 159, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613e42ae3612', '    ', '110003003', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161841', '402881e54c40d74d014c40d8407a0016', '1', 161, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613e7a50366c', '    ', '110003004', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161856', '402881e54c40d74d014c40d8407a0016', '1', 162, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613ebc8e36c1', '    ', '110003005', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161913', '402881e54c40d74d014c40d8407a0016', '1', 163, '1', null, null);
insert into SYS_DEPT (DEPT_ID, DEPT_NAME, DEPT_CODE, PAR_DEPT_ID, DEPT_LEADER, DEPT_DESC, CREATE_TIME, ORG_ID, DEPT_TYPE, ORDER_ID, STATE, BQQ_DEPT_ID, BQQ_PAR_DEPT_ID)
values ('4028e4d35b5ca4ee015b613eff483729', '    ', '110003006', '4028e4d35b5ca4ee015b60fa3e2f5a94', null, null, '2017-04-12 161930', '402881e54c40d74d014c40d8407a0016', '1', 164, '1', null, null);
이 표 에는 세 개의 필드 가 있 습 니 다:deptid 부서 메 인 키 id;dept_name 부서 이름;dept_코드 부서 코드;par_dept_id 부모 급 부서 id(첫 번 째 부 서 는-1);현재 노드 는 하위 노드 를 옮 겨 다 니 고 있 습 니 다.(현재 부서 의 모든 하위 부 서 는 그 자 체 를 포함 합 니 다)

select t.dept_id, t.dept_name, t.dept_code, t.par_dept_id, level 
 from SYS_DEPT t 
 start with t.dept_id = '40288ac45a3c1e8b015a3c28b4ae01d6' 
 connect by prior t.dept_id = t.par_dept_id 
 order by level, t.dept_code 
결과:dept_id=40288ac45a3c1e8b015a3c28b4ae01d6 은 여객 운송 부의 메 인 키 로 그 아래 의 모든 하위 부 서 를 옮 겨 다 니 는 동시에 order by level,dept_code 으로 순 서 를 매 겨 실제 생활 에서 원 하 는 데 이 터 를 달성 하도록 한다.총 31 개의 데이터,일부 데 이 터 는 그림 과 같다.

하지만:
문제 가 있 습 니 다.위의 데이터 에서 2,즉 level=2 의 모든 부 서 를 얻 으 려 면 처음에 소개 한 언어 가 소 용이 없다 는 것 을 발견 하 시 겠 습 니까?그리고 ORA-00933:sql 명령 이 제대로 끝나 지 않 았 습 니 다.why?
이것 은 나 도 잠시 이론 지식 을 연구 하지 못 했 지만 where level='2'의 위 치 를 바 꾸 어 발견 해 야 할 것 이다.잘못된 것 과 정확 한 sql 을 비교 해 보 겠 습 니 다.나중에 사용 하면 됩 니 다.지나 가 는 신 이 왜 그런 지 알 고 계 신다 면 알려 주 십시오.대단히 감사합니다!
오류 sql:

select t.dept_id, t.dept_name, t.dept_code, t.par_dept_id, level 
 from SYS_DEPT t 
 start with t.dept_id = '40288ac45a3c1e8b015a3c28b4ae01d6' 
 connect by prior t.dept_id = t.par_dept_id 
 where level = '2' 
 order by level, t.dept_code 
정확 한 sql:

select t.dept_id, t.dept_name, t.dept_code, t.par_dept_id, level 
 from SYS_DEPT t 
 where level = '2' 
 start with t.dept_id = '40288ac45a3c1e8b015a3c28b4ae01d6' 
 connect by prior t.dept_id = t.par_dept_id 
 order by level, t.dept_code 

물론,이것 은 다른 형식의 where 여과 모든 반환 기록 에 영향 을 주지 않 습 니 다.이것 은 예외 일 뿐 입 니 다!sys_connect_by_path 함수 부모 노드 에서 하위 노드 경로 로 구하 기
간단하게 소개 하면 oracle 에서 sys_connect_by_path 과 connect by 를 함께 사용 합 니 다.즉,먼저 나 무 를 만 들 거나 만들어 야 합 니 다.그렇지 않 으 면 쓸모 가 없 으 면 잘못 보고 할 수 있 습 니 다.그것 의 주요 역할 은 path 에 나타 나 는 경로 입 니 다.한 부모 노드 아래 의 모든 노드 는 특정한 문자 로 구분 한 다음 에 한 열 에 연결 되 어 표 시 됩 니 다.sys_connect_by_path(column,clear), 그 중에서 column 은 문자 형 또는 문자 형 으로 자동 으로 변환 할 수 있 는 열 이름 입 니 다.그의 주요 목적 은 부모 노드 를 현재 노드 의'path'로 지정 한 모델 에 따라 나타 나 는 것 입 니 다.char 는 단일 문자 일 수도 있 고 다 중 문자 일 수도 있 지만 열 값 에 포 함 된 글 자 를 사용 할 수 없습니다.또한 이 매개 변 수 는 상수 이 어야 하 며 바 인 딩 변 수 를 사용 할 수 없습니다.클 리 어 쉼표 쓰 지 마.
글 은 쉽게 사람 을 피로 하 게 하 니 그림 과 코드 를 놓 아 라.

select sys_connect_by_path(t.dept_name,'-->'),t.dept_id, t.dept_name, t.dept_code, t.par_dept_id, level 
 from SYS_DEPT t 
 start with t.dept_id = '40288ac45a3c1e8b015a3c28b4ae01d6' 
 connect by prior t.dept_id = t.par_dept_id 
 order by level, t.dept_code 
결과:

다음은 가장 간단 한 상황 으로 예 를 들 어 설명 한다.

SELECT t.f_id, SYS_CONNECT_BY_PATH(t.f_id, '\') AS con_code,
  SYS_CONNECT_BY_PATH(t.f_name, '\') AS con_name
FROM    t
START WITH t.f_pid IS NULL 
CONNECT BY PRIOR t.f_id = t.f_pid;
설명:그 중 fid 는 사인 코드,fpid 는 부모 노드 표지 코드,f이름
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Oracle 재 귀 트 리 구조 조회 기능 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기