表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 开发中心
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 开发中心
解决方案 »
- 想问下,麻烦帮看看参数设置是否有问题,谢谢!
- 跪求有关财务科目记账的触发器写法
- oracle导入导出时,停不停止服务有影响吗?
- 在vista下安装oracle 10g显示不兼容
- 64位操作系统(安腾芯片)windows2003安装oracle9i的问题
- 执行job出错:ORA-12011: 无法执行 1 作业。。。。
- imp-00085:指定的多个输入文件为无界导出文件!? 是我exp时候出错了吗?
- 回复有分!
- pl/sql中的一个问题
- 如何Access数据库中的表的内容导入到Oracle数据库
- 高手帮忙写个SQL
- --Oracle 10g静默安装(实战平台:RHEL5,内核版本:2.6.18-8.el5)--
表1,(
select 表1.pid,表2.userid from 表1,表2 where 表1.id = 表2.id
) x where x.pid = 表1.id
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
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>
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;