oracle中处理树型结构数据的语法

zhang6028 2003-08-11 10:59:01
本人在作一个电费收费项目,客户要求统计考核表与被考核的子表的用电量,考核表有多层隶属关系。请教各位专家,如何得到各级的用电量。

急!!!!!!!!!!!!!!!!!!!!!!!!!!!
...全文
35 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-08-11
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1551/1551178.xml?temp=.2106592
beckhambobo 2003-08-11
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1551/1551178.xml?temp=.2106592
yuxuan 2003-08-11
  • 打赏
  • 举报
回复
表名:sample
字段:id NUMBER(18)
name VARCHAR2(40)
parent_id NUMBER(18)
其中存放一个树形结构的内容。

SQL> select lpad(name,level*2+length(name),' ') name
2 from sample x
3 connect by prior id = parent_id
4 start with parent_id = 0;

效果可以如下。
name1
name2
name3
name4
name5
name6
name7

BlueskyWide 2003-08-11
  • 打赏
  • 举报
回复
给个参考贴:
http://expert.csdn.net/Expert/topic/1774/1774674.xml?temp=.3117792
gladness 2003-08-11
  • 打赏
  • 举报
回复
应该是connect by prior id = parent_id
这里面的id和parent_id是列名
那条sql的意思是说,以parent_id=0的那些行为树根,进行查找,
如果某一行的parent_id与前面查出来的某行的id相等,则是满足条件的行。
在使用start with connect by的时候,where是在数据都查出来以后才进行过滤。而start with 中的条件(可以有多个条件),是在树状结构查出来之前起作用。即where是去掉不满足条件的若干点,而start with中的条件是剪掉整个支叉。
zhang6028 2003-08-11
  • 打赏
  • 举报
回复
select lpad(name,level*2+length(name),' ') name
from sample x
connect by prior_id = parent_id
start with parent_id = 0;
以上语句能否解释一下.

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧