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

mysql 基于嵌套集合(Nested Set)模型的 path查找  sql函数,此两个函数可用于extjs4框架对于左侧treepanel的根据节点的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路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值