首页 新闻 会员 周边 捐助

sql语句,查询部门所有层级关系。

0
悬赏园豆:20 [已解决问题] 解决于 2015-03-08 21:46

tableA

id       varchar2(20),

name  varchar2(100),

pid      varchar2(20)

;

 

结构:

总部--                |----北京分公司
     |——事业一部——|
     |                |——西安分公司
     |
     |----事业二部

 

效果图:

 

 

 

麻烦各位写下sql语句,谢谢!

帅到京东中央、的主页 帅到京东中央、 | 初学一级 | 园豆:104
提问于:2015-03-03 14:58
< >
分享
最佳答案
0

楼主  应该是要用递归查询吧

with cte as
(
select Id,Pid,name,0 as lvl from tableA
where Id = 1
union all
select d.Id,d.Pid,d.name,lvl+1 from cte c inner join tableA d
on c.Id = d.Pid
)
select * from cte

cte 为别名可自行定义

收获园豆:10
一哥学技术 | 菜鸟二级 |园豆:212 | 2015-03-03 15:39
其他回答(4)
0

麻烦你说清楚一点,要不然得假设1000多种可能性,回答得超过30万行。

收获园豆:2
爱编程的大叔 | 园豆:30844 (高人七级) | 2015-03-03 15:00

谢谢你的提醒,我修改了问题.

支持(0) 反对(0) 帅到京东中央、 | 园豆:104 (初学一级) | 2015-03-03 15:06

@yq_lookup: 还是不够清楚。

1、猜pid是Parent ID

2、什么叫查询部门所有结构?你是要数据还是要显示?要数据的话,麻烦你写一下数据应该是怎样的,

如果是显示,那又不一样了。

3、类似这个的问题博问很多人提问过了,你搜索一下就有。

4、正确一点的提问这样

ID     NAME     PID

0     北京      

1     朝阳区     0

2     某某区     0

......

 

希望得到以下结果

.....

你又是结构,又是图的,可能是搞混了数据和显示的关系。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-03-03 15:08

@爱编程的大叔: 就是说,

这是记录了一个多层次关系的表,PID即父ID的意思。现在我想实现的功能是

给定一个ID,就能查出该ID下所有的子ID和子ID的下一级ID,一直向下搜索,

直到某一级ID没有子ID为止 ,请问如何实现?

支持(0) 反对(0) 帅到京东中央、 | 园豆:104 (初学一级) | 2015-03-03 15:13

@yq_lookup: 递归。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-03-03 15:17
0

递归在sql server中可以用cte实现,博客园搜索一下cte,太多资料了,就不赘述了。

收获园豆:2
幻天芒 | 园豆:37205 (高人七级) | 2015-03-03 15:18
0
收获园豆:4
KingMi | 园豆:1344 (小虾三级) | 2015-03-03 15:37
0

楼上几位说了,递归加上CTE可能是你最好的选择,请参考这里

收获园豆:2
JeffWong | 园豆:2328 (老鸟四级) | 2015-03-03 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册