有一树状结构的表,如下所示:id(子ID) pid(父ID) name
------------------------
1 -1 中国
2 1 湖北省
3 2 武汉市
4 3 洪山区
5 3 江岸区
我想产生这样一个视图,如下所示中国 湖北省 武汉市 江岸区
中国 湖北省 武汉市 洪山区
这是动态的,按照树结构,数据可随意增减!
如何产生这个视图,请高手示下, 拜谢!
------------------------
1 -1 中国
2 1 湖北省
3 2 武汉市
4 3 洪山区
5 3 江岸区
我想产生这样一个视图,如下所示中国 湖北省 武汉市 江岸区
中国 湖北省 武汉市 洪山区
这是动态的,按照树结构,数据可随意增减!
如何产生这个视图,请高手示下, 拜谢!
SELECT NN
FROM (SELECT SYS_CONNECT_BY_PATH(NAME, ' ') NN, LEVEL LL
FROM TT
START WITH PID = '-1'
CONNECT BY PRIOR ID = PID)
WHERE LL = (SELECT MAX(LL)
FROM (SELECT LEVEL LL
FROM TT
START WITH PID = '-1'
CONNECT BY PRIOR ID = PID));输出:
中国 湖北省 武汉市 江岸区
中国 湖北省 武汉市 洪山区
SQL> select * from table1; CID CNAME FID
---------- -------- ----------
1 china -1
2 hubei 1
3 wuhan 2
4 hongshan 3
5 jianan 3SQL>
SQL> select path
2 from (
3 select ltrim(sys_connect_by_path(cname,' '),' ') path,
4 level lev
5 from table1 tt
6 connect by prior cid = fid
7 )zz
8 where lev = (select max(level)
9 from table1 tt
10 connect by prior cid = fid);PATH
--------------------------------------------------------------------------------
china hubei wuhan hongshan
china hubei wuhan jianan
2 union
3 select 2 id,1 pid,'湖北省' name from dual
4 union
5 select 3 id,2 pid,'武汉市' name from dual
6 union
7 select 4 id,3 pid,'洪山区' name from dual
8 union
9 select 5 id,3 pid,'江岸区' name from dual
10 )
11 SELECT NAME FROM
12 (select ID,SUBSTR(SYS_CONNECT_BY_PATH(NAME, '/'),2) NAME,CONNECT_BY_ISLEAF ISLEAF
13 FROM A
14 START WITH PID=-1
15 CONNECT BY PRIOR ID=PID )
16 WHERE ISLEAF=1
17 /
NAME
--------------------------------------------------------------------------------
中国/湖北省/武汉市/洪山区
中国/湖北省/武汉市/江岸区
SQL>
谢谢, 差不多了, 就这个意思, 但是数据在一列里, 能把它按各个区域分开么?如下所示国家 编码 省名称 省编码 城市 城市编码 区 区码
中国 1 湖北省 2 武汉市 3 4 洪山区
中国 1 湖北省 2 武汉市 3 5 江岸区