求SQL:如何查询树上的某个节点的根。如表:Parent Child
AR A1
A1 A2
A2 A3
BR B1
B1 B2
B2 A3
CR C1
C1 C2
C2 C3
DR D1
D1 D2
D2 D3
D3 A3我想用SQL查出C3和A3的最上层节点,查询结果为:
A3 AR,BR,DR
C3 CR
AR A1
A1 A2
A2 A3
BR B1
B1 B2
B2 A3
CR C1
C1 C2
C2 C3
DR D1
D1 D2
D2 D3
D3 A3我想用SQL查出C3和A3的最上层节点,查询结果为:
A3 AR,BR,DR
C3 CR
解决方案 »
- sqlplus position 参数问题请教
- 怎么向BOLB类型的字段里插入一个字符串?
- 怎样把oracle92里的数据库导入到8.1.7中?
- 关于数据库最严格限定条件的问题!
- 怎样实现跨表数据记录更新
- 请问sqlserver2000的数据库内容能转到oracle下吗????
- oracle在redhat9安装问题? 请高手指教 !!
- 关于oracle817用managerment server进行数据库备份的问题。
- JAVA中的CHAR和ORACLE中的数据类型对应问题
- 如何通过SQL语句得到oracle中指定一个表的表结构,以及在哪些视图。存储过程中使用过?
- 在恢复区内不能进行双重备份
- 请教PL/SQL入门问题
select child, connect_by_root parent root from t
start with parent like '%R' connect by prior child = parent
) where child in ('A3','C3') group by child;
parent不一定是以R结尾,查询的输入参数只有‘A3’和‘C3’
--emp_Id 员工编号
--superior_id 上级工号
create table emp
( emp_Id varchar2(10), emp_name varchar2(20), superior_id varchar2(10));insert into emp (emp_id, emp_name, superior_id)
values( '1101','王一山','' );insert into emp (emp_id, emp_name, superior_id)
values( '1102','何少芬','1101' );insert into emp (emp_id, emp_name, superior_id)
values( '1103','王纬明','1101' );insert into emp (emp_id, emp_name, superior_id)
values( '1104','白梓悦','1102' );insert into emp (emp_id, emp_name, superior_id)
values( '1105','李旭辉','1102' );
----显示'白梓悦'的最高上级
select * as emp_l from emp where connect_by_isleaf =1
start with emp_name='白梓悦'
connect by prior superior_id=emp_id;
select * from emp where connect_by_isleaf =1
start with emp_name='白梓悦'
connect by prior superior_id=emp_id;
connect_by_isleaf 这一个是oracle一个特性(伪列)
其实还有其他的方法,条条大道能罗马,呵呵,楼主可以百度一下。
我只弄过写一个循环处理,将每一个的根结点取出。