表1
id      pid       name 3 0 开发中心
11 3 部门1
12 3 部门2
13 3 部门3
14 3 部门4
15 3 部门5
16 3 部门6
17 3 部门7表2
id       userid12 6036
12 6044
13 6051
13 6054
14 6065
14 6067
14 6069
15 6089
15 6090
15 6091
17 6104
17 6105需要结果:
userid     name 6036       开发中心
6044       开发中心
6051       开发中心
6054       开发中心
6065       开发中心
6067       开发中心
6069       开发中心
6089       开发中心
6090       开发中心
6091       开发中心
6104       开发中心
6105       开发中心

解决方案 »

  1.   

    select x.userid,表1.name from 
    表1,(
    select 表1.pid,表2.userid from 表1,表2 where 表1.id = 表2.id
    ) x where x.pid = 表1.id
      

  2.   


    select tb.userid,ta.name
    from ta,tb
    where ta.id=tb.id
    start with ta.id=3
    connect by prior ta.id=tb.id
      

  3.   


    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 
    Connected as yeexun
     
    SQL> 
    SQL> with ta as(
      2       select 3 id,0 pid,'开发中心' name from dual union all
      3       select 11,3,'部门1' from dual union all
      4       select 12,3,'部门2' from dual union all
      5       select 13,3,'部门3' from dual union all
      6       select 14,3,'部门4' from dual union all
      7       select 15,3,'部门5' from dual union all
      8       select 16,3,'部门6' from dual union all
      9       select 17,3,'部门7' from dual)
     10  ,tb as(
     11      select 12 id,6036 userid from dual union all
     12      select 12,6044 from dual union all
     13      select 13,6051 from dual union all
     14      select 13,6054 from dual union all
     15      select 14,6065 from dual union all
     16      select 14,6067 from dual union all
     17      select 14,6069 from dual union all
     18      select 15,6089 from dual union all
     19      select 15,6090 from dual union all
     20      select 15,6091 from dual union all
     21      select 17,6104 from dual union all
     22      select 17,6105 from dual)
     23  select tb.userid,ta.name
     24  from ta,tb
     25  start with ta.id=3
     26  connect by prior ta.id=tb.id
     27  /
     
        USERID NAME
    ---------- --------
          6036 开发中心
          6044 开发中心
          6051 开发中心
          6054 开发中心
          6065 开发中心
          6067 开发中心
          6069 开发中心
          6089 开发中心
          6090 开发中心
          6091 开发中心
          6104 开发中心
          6105 开发中心
     
    12 rows selected
     
    SQL> 
      

  4.   


    create table TEST
    (
      ID   VARCHAR2(16),
      PID  VARCHAR2(16),
      NAME VARCHAR2(16)
    );
    create table TEST1
    (
      ID     VARCHAR2(16),
      USERID VARCHAR2(16)
    );
    insert into test (ID, PID, NAME) values ('3', '0', '开发中心');
    insert into test (ID, PID, NAME) values ('11', '3', '部门1');
    insert into test (ID, PID, NAME) values ('12', '3', '部门2');
    insert into test (ID, PID, NAME) values ('13', '3', '部门3');
    insert into test (ID, PID, NAME) values ('14', '3', '部门4');
    insert into test (ID, PID, NAME) values ('15', '3', '部门5');
    insert into test (ID, PID, NAME) values ('16', '3', '部门6');
    insert into test (ID, PID, NAME) values ('17', '3', '部门7');
    COMMIT;
    insert into test1 (ID, USERID) values ('12', '6036');
    insert into test1 (ID, USERID) values ('12', '6044');
    insert into test1 (ID, USERID) values ('13', '6051');
    insert into test1 (ID, USERID) values ('13', '6054');
    insert into test1 (ID, USERID) values ('14', '6065');
    insert into test1 (ID, USERID) values ('14', '6067');
    insert into test1 (ID, USERID) values ('14', '6069');
    insert into test1 (ID, USERID) values ('15', '6089');
    insert into test1 (ID, USERID) values ('15', '6090');
    insert into test1 (ID, USERID) values ('15', '6091');
    insert into test1 (ID, USERID) values ('17', '6104');
    insert into test1 (ID, USERID) values ('17', '6105');
    COMMIT;
    SELECT id,userid,substr(sys_connect_by_path(NAME,','),2) NAME1 FROM 
    (SELECT a.id,a.pid,a.name,b.userid FROM test  a ,test1 b
    WHERE a.id =b.id(+))
    START WITH pid='0'
    CONNECT BY PRIOR   ID=pid)
    WHERE userid IS NOT NULL;