3个回答
展开全部
如果树的层数固定就可以用语句查询,但效率比较低。例如你说的三层:
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
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里写个函数,实现递归。
展开全部
你的问题是怎么从 部门表中获得全称
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
**/
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"
这两句是什么意思?
运行以后提示这个。
追答
运行以后提示???????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Oracle 有 start with ... connect by 的语法
SqlServer没有,必须自己写存储过程实现。
SqlServer没有,必须自己写存储过程实现。
追问
求语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询