你自己再和 SURFACE通过ID连接一下:WITH t1 AS
(
SELECT 'l1' line_id,'1' start_surface_id,'A' end_surface_id FROM dual UNION ALL
SELECT 'l2' line_id,'1' start_surface_id,'B' end_surface_id FROM dual UNION ALL
SELECT 'l3' line_id,'B' start_surface_id,'C' end_surface_id FROM dual UNION ALL
SELECT 'l4' line_id,'C' start_surface_id,'D' end_surface_id FROM dual UNION ALL
SELECT 'l5' line_id,'1' start_surface_id,'E' end_surface_id FROM dual UNION ALL
SELECT 'l6' line_id,'1' start_surface_id,'F' end_surface_id FROM dual UNION ALL
SELECT 'l7' line_id,'G' start_surface_id,'H' end_surface_id FROM dual )
SELECT distinct(t.end_surface_id) FROM (
SELECT * FROM t1
START WITH t1.start_surface_id='1'
CONNECT BY PRIOR t1.end_surface_id=t1.start_surface_id) t
ORDER BY T.END_SURFACE_ID
(
SELECT 'l1' line_id,'1' start_surface_id,'A' end_surface_id FROM dual UNION ALL
SELECT 'l2' line_id,'1' start_surface_id,'B' end_surface_id FROM dual UNION ALL
SELECT 'l3' line_id,'B' start_surface_id,'C' end_surface_id FROM dual UNION ALL
SELECT 'l4' line_id,'C' start_surface_id,'D' end_surface_id FROM dual UNION ALL
SELECT 'l5' line_id,'1' start_surface_id,'E' end_surface_id FROM dual UNION ALL
SELECT 'l6' line_id,'1' start_surface_id,'F' end_surface_id FROM dual UNION ALL
SELECT 'l7' line_id,'G' start_surface_id,'H' end_surface_id FROM dual )
SELECT distinct(t.end_surface_id) FROM (
SELECT * FROM t1
START WITH t1.start_surface_id='1'
CONNECT BY PRIOR t1.end_surface_id=t1.start_surface_id) t
ORDER BY T.END_SURFACE_ID
解决方案 »
- 请教大家一些职业规划的建议
- 谁用过oracle sql developer;难道oracle sql developer 的导入excel数据功能有致命BUG???!!!!
- Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
- sysdate 使用 index 的问题
- nhibernate使用sequence分配主键偶尔有重复值
- 不知道有没有好办法?
- 请高手帮忙写一个定时能删除数据的存储过程(祝各位中秋节快乐!)
- 如何查找一条记录中某个字段值为"ABCDWF"的表?
- 关于游标的问题
- Oracle sql语句问题
- Oracle数据库工程师培训视频资料下载
- 请高手指教START WITH CONNECT BY的问题?
这种是典型的树形结构,把开始面和结束面分别看成父节点和子节点就可以了。
用start with ... connect by prior ... 级联查询即可。