递归的表结构
region_id  super_id  region_name
0          -1        中国电信
1          0         湖南省电信公司
2          1         岳阳市本地网
3          2         岳阳市
1350       1         长沙本地网
1351       1350      长沙市
733        1350      望城县
   系统根据登陆的员工分三种权限
系统管理员        看全部的组织机构  
本地网管理员      看本地网的组织机构
(长沙)营业厅    只能看到(长沙)市以长沙为例,员工登陆后,可以根据你的登陆信息,通过执行一个方法在你的sql语句后面分别加上 where 1=1 ; where region_id = 1350;  where region_id = 1351sql语句应该怎么写?

解决方案 »

  1.   

    换个说法:
    系统管理员  通过在后面加个where 1=1 ,查询的结果是
    region_id  super_id  region_name
    0          -1        中国电信
    1          0         湖南省电信公司
    2          1         岳阳市本地网
    3          2         岳阳市
    1350       1         长沙本地网
    1351       1350      长沙市
    733        1350      望城县本地网管理员  通过在后面加个where region_id = 1350 ,查询的结果是
    region_id  super_id  region_name
    0          -1        中国电信
    1          0         湖南省电信公司
    1350       1         长沙本地网
    1351       1350      长沙市
    733        1350      望城县(长沙)营业厅  通过在后面加个where region_id = 1351 ,查询的结果是
    0          -1        中国电信
    1          0         湖南省电信公司
    1350       1         长沙本地网
    1351       1350      长沙市
      

  2.   

    SQL> create table wiler_tab (region_id number(10),super_id number(10),region_name varchar2(30));Table createdSQL> insert into wiler_tab values(0,          -1,        '中国电信');1 row insertedSQL> insert into wiler_tab values(1,          0,         '湖南省电信公司');1 row insertedSQL> insert into wiler_tab values(2,          1,         '岳阳市本地网');1 row insertedSQL> insert into wiler_tab values(3,          2,         '岳阳市');1 row insertedSQL> insert into wiler_tab values(1350,       1,         '长沙本地网');1 row insertedSQL> insert into wiler_tab values(1351,       1350,      '长沙市');1 row insertedSQL> insert into wiler_tab values(733,        1350,      '望城县');1 row insertedSQL> commit;Commit completeselect *
    from wiler_tab
    start with region_id=1351
    connect by prior super_id=region_id
    order by region_id;0 -1 中国电信
    1 0 湖南省电信公司
    1350 1 长沙本地网
    1351 1350 长沙市
      

  3.   

    谢谢  wiler(@_@) ( )
    这个对于营业厅是成立的
    但是对于其他的俩个权限不成立 :(
      

  4.   

    根据你的具体需要修改select *
    from wiler_tab
    start with region_id=1351
    connect by prior super_id=region_id
    order by region_id;这个语句