求一SQL写法,想了好久没想出,只能上来求教了

[复制链接]
查看11 | 回复9 | 2010-10-8 09:32:26 | 显示全部楼层 |阅读模式
求一SQL写法,想了好久没想出,只能上来求教了

现在有一张表,结构大概是这样的:

id,name,parentid(父节点,对应前面 id)
这是一个树型结构的表,请问使用SQL语句能不能实现一查询来输出以下结果形式:

idname1name2 name3
1001 总经理
1002
副总经理1
1004
部门经理1

1005
部门经理2
1003
副总经理2

部门经理3

部门经理4

...........................

...........................
这样上级对应他的直管下级
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
LZ, 把原始的数据的相关的建表脚本列出来, 把最终的结果格式化一下!
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
原帖由 bell6248 于 2011-3-9 17:12 发表
LZ, 把原始的数据的相关的建表脚本列出来, 把最终的结果格式化一下!


表结构就只有这三列,数据如下:
id
name
parentid
1001 总经理
1002 副总经理1 1001
1003 副总经理2
1001
1004 部门经理1
1002
1005 部门经理2
1002
1006 部门经理3 1003
1007 部门经理4
1003
.................
.................
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
LZ 能确定这个只有三个级别(level)吧?
做自连接就能解决的啊 稍后放SQL
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
原帖由 影之哀伤 于 2011-3-9 17:29 发表
LZ 能确定这个只有三个级别(level)吧?
做自连接就能解决的啊 稍后放SQL


这不只三个级别啊,我只是举例,可能有6到7个级别
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
存储过程行吗?
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
用 CONNECT BY什么的
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
select id, sys_connect_by_path(name,'>') name from
teststart with parentid is null connect by parentid=prior id
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
原帖由 lwhjava 于 2011-3-9 17:37 发表
存储过程行吗?

最希望的是可以写成视图这样,不过存储过程也可以看看思路
回复

使用道具 举报

千问 | 2010-10-8 09:32:26 | 显示全部楼层
原帖由 sanfenzh 于 2011-3-9 17:32 发表


这不只三个级别啊,我只是举例,可能有6到7个级别


LZ其实就是一个行转列, 但是最终又多少列是未知的。
基于以下的SQL语句写一个procedure, 具体如何写可以参照本开发版的精华贴关于行转列的所有方法!
SQL> select level ln,
2 id,
3 sys_connect_by_path(name, ',') path
4from tt
5start with parentid is null
6connect by prior id = parentid
7/
LN ID PATH
---------- ---------- --------------------------------------------------------------------------------
1 1001 ,总经理
2 1002 ,总经理,副总经理1
3 1004 ,总经理,副总经理1,部门经理1
3 1005 ,总经理,副总经理1,部门经理2
2 1003 ,总经理,副总经理2
3 1006 ,总经理,副总经理2,部门经理3
3 1007 ,总经理,副总经理2,部门经理4
7 rows selected
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行