mysql 嵌套集合_mysql 基于嵌套集合(Nested Set)模型的 path查找 sql函数

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 pIdINT(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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值