tableA
id varchar2(20),
name varchar2(100),
pid varchar2(20)
;
结构:
总部-- |----北京分公司
|——事业一部——|
| |——西安分公司
|
|----事业二部
效果图:
麻烦各位写下sql语句,谢谢!
楼主 应该是要用递归查询吧
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 为别名可自行定义
麻烦你说清楚一点,要不然得假设1000多种可能性,回答得超过30万行。
谢谢你的提醒,我修改了问题.
@yq_lookup: 还是不够清楚。
1、猜pid是Parent ID
2、什么叫查询部门所有结构?你是要数据还是要显示?要数据的话,麻烦你写一下数据应该是怎样的,
如果是显示,那又不一样了。
3、类似这个的问题博问很多人提问过了,你搜索一下就有。
4、正确一点的提问这样
ID NAME PID
0 北京
1 朝阳区 0
2 某某区 0
......
希望得到以下结果
.....
你又是结构,又是图的,可能是搞混了数据和显示的关系。
@爱编程的大叔: 就是说,
这是记录了一个多层次关系的表,PID即父ID的意思。现在我想实现的功能是
给定一个ID,就能查出该ID下所有的子ID和子ID的下一级ID,一直向下搜索,
直到某一级ID没有子ID为止 ,请问如何实现?
@yq_lookup: 递归。
递归在sql server中可以用cte实现,博客园搜索一下cte,太多资料了,就不赘述了。