이 기사는 Oracle에 대한 관련 지식을 제공합니다. 주로 ORACLE 트리 구조 쿼리에 대한 기사를 소개하며, 자세한 내용을 함께 살펴보겠습니다. 모든 사람.
추천 튜토리얼: "Oracle Video Tutorial"
일상 프로그래밍에서 우리는 조직, 행정 부서 등과 같은 트리 구조의 표현을 자주 접하게 됩니다. 이는 데이터베이스의 테이블을 통해 표시되는 경우가 많습니다. 여기서는 간단한 행정 구역 테이블을 예로 들어 보겠습니다. 실제 사용 시에는 여기에 다른 설명 필드와 수준을 추가할 수 있습니다.
테이블은 ID 및 PID와 연결되어 트리 구조 저장을 구현합니다. 테이블 생성 및 데이터 설명은 다음과 같습니다.
-- Create table create table TREETEST ( id NVARCHAR2(50), pid NVARCHAR2(50), name NVARCHAR2(50) )
insert into TREETEST (ID, PID, NAME) values ('1', null, '山东省'); insert into TREETEST (ID, PID, NAME) values ('2', '1', '青岛市'); insert into TREETEST (ID, PID, NAME) values ('3', '1', '烟台市'); insert into TREETEST (ID, PID, NAME) values ('4', null, '河南省'); insert into TREETEST (ID, PID, NAME) values ('5', null, '河北省'); insert into TREETEST (ID, PID, NAME) values ('6', '2', '市南区'); insert into TREETEST (ID, PID, NAME) values ('7', '2', '市北区'); insert into TREETEST (ID, PID, NAME) values ('8', '2', '即墨市');
트리 구조를 쿼리하는 방법은 무엇입니까? Oracle은 쿼리에 대한 재귀 쿼리를 제공합니다.
SELECT [Column]….. FEOM [Table] WHERE Conditional1 START WITH Conditional2 CONNECT BY PRIOR Conditional3 ORDER BY [Column]
설명:
아래의 구체적인 예를 살펴보겠습니다.
1. Shandong 성 아래의 모든 하위 노드를 쿼리합니다.
SELECT * FROM TREETEST t START WITH t.PID=1 CONNECT BY PRIOR t.ID = t.PID
ID가 1인 노드는 Shandong Province 노드입니다. 칭다오시 레벨 하위 노드 (위와는 다름, 모든 하위 노드와 다음 레벨 하위 노드)
3. 표시하기 위해 칭다오시, 산동성 등을 연결해야 하는 경우 , SYS_CONNECT_BY_PATH를 사용하여
SELECT t.ID, SYS_CONNECT_BY_PATH(t.NAME, '\') AS INDU_NAME FROM TREETEST t START WITH t.PID IS NULL CONNECT BY PRIOR t.ID = t.PID
쿼리 결과는 다음과 같습니다.
4 같은 방식으로 아래에서 위로 쿼리할 수도 있습니다
SELECT * FROM TREETEST t START WITH t.ID=8 CONNECT BY t.ID = PRIOR t.PID
추천 튜토리얼 : "Oracle 비디오 튜토리얼"
위 내용은 ORACLE 트리 구조 쿼리를 분석한 기사 1개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!