sql 查询树形数据。

RT... RT 展开
 我来答
iambise
推荐于2016-03-19 · TA获得超过714个赞
知道小有建树答主
回答量:834
采纳率:50%
帮助的人:497万
展开全部
如果树的层数固定就可以用语句查询,但效率比较低。例如你说的三层:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id
追问
不固定树形。
最好能在SQL里写个函数,实现递归。
erqing091092
2012-04-11 · TA获得超过1239个赞
知道小有建树答主
回答量:882
采纳率:0%
帮助的人:337万
展开全部
你的问题是怎么从 部门表中获得全称
SELECT ID,DEPTNAME FROM
(
SELECT ID,CONNECT_BY_ISLEAF "IsLeaf",
SYS_CONNECT_BY_PATH(Name, '/') "DEPTNAME"
FROM DEPT
START WITH ParentID = 0
CONNECT BY PRIOR Id = ParentId;
) XX WHERE XX.IsLeaf = 1
/** start with 最高级部门 ,如果最高部门是一营
就应该 start with parentId = 0
如果最高部门为司令部 且parentId 是null
就应该 start with parentId is null
**/
追问
CONNECT_BY_ISLEAF "IsLeaf", 
SYS_CONNECT_BY_PATH(Name, '/') "DEPTNAME"
这两句是什么意思?
运行以后提示这个。
追答
运行以后提示???????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2012-04-11 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3930万
展开全部
Oracle 有 start with ... connect by 的语法

SqlServer没有,必须自己写存储过程实现。
追问
求语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式