建表語句:
create插入資料:table
sc_district
( id
number(10) not
null
, parent_id
number(10
), name
varchar2(255 byte) not
null
);alter
table sc_district add(
constraint
sc_district_pk
primary
key(id));
alter
table sc_district add(
constraint
sc_district_r01
foreign
key(parent_id)
references sc_district (id));
insert生成表如下:into sc_district(id,name) values(1,'
四川省'
);insert
into sc_district(id,parent_id,name) values(2,1,'
巴中市'
);insert
into sc_district(id,parent_id,name) values(3,1,'
達州市'
); insert
into sc_district(id,parent_id,name) values(4,2,'
巴州區'
);insert
into sc_district(id,parent_id,name) values(5,2,'
通江縣'
);insert
into sc_district(id,parent_id,name) values(6,2,'
平昌縣'
);insert
into sc_district(id,parent_id,name) values(7,3,'
通川區'
);insert
into sc_district(id,parent_id,name) values(8,3,'
宣漢縣'
);insert
into sc_district(id,parent_id,name) values(9,8,'
塔河鄉'
);insert
into sc_district(id,parent_id,name) values(10,8,'
三河鄉'
);insert
into sc_district(id,parent_id,name) values(11,8,'
胡家鎮'
);insert
into sc_district(id,parent_id,name) values(12,8,'
南壩鎮');
insert
into sc_district(id,parent_id,name) values(13,6,'
大寨鄉'
);insert
into sc_district(id,parent_id,name) values(14,6,'
響灘鎮'
);insert
into sc_district(id,parent_id,name) values(15,6,'
龍崗鎮'
);insert
into sc_district(id,parent_id,name) values(16,6,'
白衣鎮');
查詢巴中市下面的所有行政組織(結果包含當前節點):select
*from
sc_district
start
with name=
'巴中市
'connect
by prior id=
parent_id
查詢結果:
id parent_id name21
巴中市4
2巴州區52
通江縣6
2平昌縣136
大寨鄉14
6響灘鎮156
龍崗鎮16
6 白衣鎮
查詢響灘鎮鎮所屬的市:select
id, parent_id, name,
connect_by_root(id) city_id,
connect_by_root(name) city_name
from
sc_district
where name=
'響灘鎮
'start
with parent_id=
1connect
by prior id=
parent_id
查詢結果:
id parent_id name city_id city_name
146 響灘鎮 2 巴中市
level:查詢節點層次,從1開始。
connect_by_isleaf:查詢節點是否是葉子節點,是則為1,不是則為0
select id, name, parent_id, level
, connect_by_isleaf
from
sc_district
start
with name=
'巴中市
'connect
by prior id=
parent_id
order
byid;
查詢結果:
id name parent_id
level
connect_by_isleaf
2 巴中市 110
4 巴州區 221
5 通江縣 221
6 平昌縣 220
13 大寨鄉 631
14 響灘鎮 631
15 龍崗鎮 631
16 白衣鎮 6
31
查詢巴中市下行政組織遞迴路徑select
id, name, parent_id,
substr(sys_connect_by_path(name,
'->
'),3
) name_path
from
sc_district
start
with name=
'巴中市
'connect
by prior id=
parent_id
查詢結果:
id name parent_id name_path
2 巴中市 1
巴中市4 巴州區 2 巴中市->
巴州區5 通江縣 2 巴中市->
通江縣6 平昌縣 2 巴中市->
平昌縣13 大寨鄉 6 巴中市->平昌縣->
大寨鄉14 響灘鎮 6 巴中市->平昌縣->
響灘鎮15 龍崗鎮 6 巴中市->平昌縣->
龍崗鎮16 白衣鎮 6 巴中市->平昌縣->白衣鎮
oracle 遞迴查詢 Oracle遞迴查詢
1.1 建立表與插入資料 create table district id number 10 not null,parent id number 10 name varchar2 255 byte not null alter table district add constraint distr...
oracle 逆向遞迴查詢 oracle遞迴查詢
oracle的遞迴查詢 最近在看公司的oa系統,oa系統中基本都會有節點樹,其中對於樹上的資料展示,就是用了資料庫的遞迴查詢,在這裡總結下遞迴查詢。現在存在如下的一棵樹 不會畫樹,將就一下,該樹對應下面建立的表資料。建立如下表 create table dg id number not null,主...
oracle 逆向遞迴查詢 Oracle遞迴查詢
start with.connect by子句遞迴查詢一般用於乙個表維護樹形結構的應用。建立示例表 create table tbl test id number,name varchar2 100 byte pid number default 0 插入測試資料 insert into tbl t...