mysql 基于嵌套集合(Nested Set)模型的 path查找 sql函数
时间:2014-01-20 23:07:40
收藏:0
阅读:475
mysql 基于嵌套集合(Nested Set)模型的 path查找 sql函数,此两个函数可用于extjs4框架对于左侧treepanel的根据节点的path异步展开的情形。每个函数有一个参数。第一个
1.deptId
以上代码是根据deptId查找其自身的path路径
1.deptId
2.empId
附上代码:
BEGIN
DECLARE path VARCHAR(255);
DECLARE parentId INT(11);
DECLARE curDeptId INT(11);
DECLARE pId INT(11);
SET path=CONCAT(‘/‘,deptId);
SET curDeptId=deptId;
SELECT p.id INTO parentId FROM dept node,dept p
WHERE node.lft BETWEEN p.lft AND p.rgt AND node.id!=p.id AND node.id = curDeptId
ORDER BY p.lft DESC LIMIT 1;
IF(parentId>0) THEN
SET path=CONCAT(parentId,path);
END IF;
LOOP1:WHILE(parentId IS NOT NULL AND parentId>1) DO
SELECT parent.id INTO pId FROM dept node,dept parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id != parent.id
AND node.id = parentId
ORDER BY parent.lft DESC
LIMIT 1;
IF(pId>0) THEN
SET path=CONCAT(pId,‘/‘,path);
SET parentId=pId;
SET pId=NULL;
END IF;
END WHILE LOOP1;
RETURN(path);
END以上代码是根据deptId查找其自身的path路径
##---------------------------------------------------------
BEGIN
DECLARE path VARCHAR(255);
DECLARE parentId INT(11);
DECLARE curDeptId INT(11);
DECLARE pId INT(11);
SET path=CONCAT(‘/‘,empId);
SET curDeptId=empId;
SELECT emp.dept_id INTO parentId FROM ep emp WHERE emp.id = curDeptId;
IF(parentId>0) THEN
SET path=CONCAT(parentId,path);
END IF;
LOOP1:WHILE(parentId IS NOT NULL AND parentId>1) DO
SELECT parent.id INTO pId FROM dept node,dept parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id != parent.id
AND node.id = parentId
ORDER BY parent.id DESC
LIMIT 1;
IF(pId>0) THEN
SET path=CONCAT(pId,‘/‘,path);
SET parentId=pId;
SET pId=NULL;
END IF;
END WHILE LOOP1;
RETURN(path);
END以上代码是根据所在部门的emp员工的path路径。原文:http://blog.csdn.net/skyshowshow/article/details/18444499
评论(0)