1.树形结构是开发过程中遇到的比较常见,今天分享一个 如何通过父节点 查询出所有的子节点 ,通过子节点查询出父节点的方法
2.首先呢,我在数据库中是通过 id 和 parent_id 来生成这个 树形结构的关系 id 为当前数据id ,parent_id为当前数据的父节点 id
我是将父节点的parent_id 设为0
3.接下来我分享一下如何通过数据id, 查询到 其下面的所有子节点 父-------> 子
CREATE DEFINER=`root`@`%` FUNCTION `queryRegionDirectoryChildIdById`(parentId INT) RETURNS varchar(21845) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(15000);
DECLARE sTempChd VARCHAR(15000);
SET sTemp = '-2';
SET sTempChd = cast(parent_idas char);
WHILE sTempChd is not NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM region_directory where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
return sTemp;
END
4.如何通过数据 id 查询到其所有的父节点 子------>父
CREATE DEFINER=`root`@`%` FUNCTION `listBosPositionParentById`(rootId varchar(36),departmentId int) RETURNS varchar(21845) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE ptemp VARCHAR(21845);
DECLARE ctemp VARCHAR(21845);
SET ptemp = '-1';
SET ctemp = rootId;
WHILE ctemp IS NOT NULL DO
SET ptemp = concat(ptemp, ',', ctemp);
SELECT GROUP_CONCAT(uid) INTO ctemp
FROM bos_position
WHERE uid = ( SELECT parent_id FROM bos_position WHERE FIND_IN_SET(uid,ctemp) > 0 and dept_id=departmentId and is_del='0') ;
END WHILE;
RETURN ptemp;
END
5.关于这俩个函数该如何执行 我大概的介绍一下。
1)首先小编用的工具是Navicat Premium 连接的是mysql数据库 接下来我将演示如何在Navicat Premium中如何执行这俩个函数
2) 点击图中的函数 ---> 然后新建函数 ---> 输入这个函数的名字 和类型 然后点击下一步 点击完成,将上述代码直接复制进去即可。
6.好了大概效果就是如此 小编才疏浅陋 ,还望大神勿喷。一起加油!