日期:2014-05-17  浏览次数:21244 次

select查询树型结构的表
String,int,int
areaname,id,上级id
总部,0,-1
华中,1,0
华东,2,0
华北,3,0
华南,4,0
华西,5,0
上海,21,2
北京,31,3
武汉,11,1
广州,41,4
杭州,22,2
西湖区,221,22


上面是数据库里的表,我想通过select构建列外个视图如下
总部,0,-1
华中,1,0     总部
华东,2,0     总部
华北,3,0     总部
华南,4,0     总部
华西,5,0     总部
上海,21,2     华东
北京,31,3     华北
武汉,11,1     华中
广州,41,4
杭州,22,2
西湖区,221,22

就是读出他的上级id对应的名称

------解决方案--------------------
select a.id,a.name,b.name 上级name from tablea a,
tablea b where a.上级id=b.id;
------解决方案--------------------
LZ,1楼的理解是正确的,你如果要构建视图,如下:

CREATE OR REPLACE VIEW MY_TEST AS
select t2.areaname,t2.id,t2.pid,t1.areaname
from tablename t1,
tablename t2
where t2.pid = t1.id(+);

======================result=========================

AREANAME ID PID AREANAME
-------- ---------- ---------- --------
总部 0 -1
华中 1 0 总部
华东 2 0 总部
华北 3 0 总部
华南 4 0 总部
华西 5 0 总部
武汉 11 1 华中
上海 21 2 华东
杭州 22 2 华东
北京 31 3 华北
广州 41 4 华南
西湖区 221 22 杭州

12 rows selected