求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
解决方案 »
- 本地可使用PL/sql登录,远程不行,出错ora-12535
- FROM R_RInfoTp_New_No_AGG@DL_ToGenesys HourInfo 请问这是什么意思
- ORACLE的CLOB的数据类型调用出来是不是需要再转换才能显示呢 ?(在线等待.....)
- 数据块是什么含义
- 小弟是菜鸟,请问一下svrmgrl是什么,9I中有吗?
- 关于“~”(不是“~”)的取值问题
- 高手:请我个例子,编写有输入参数的插入数据到CLOB字段的存储过程(100分)急急急!!
- 各位高手帮忙!急用!
- D2000与ORACLE问题!!!!中秋没有休息了!
- 如何备份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一个特性(伪列)
其实还有其他的方法,条条大道能罗马,呵呵,楼主可以百度一下。
我只弄过写一个循环处理,将每一个的根结点取出。