mysql 递归查询父节点 和子节点

查父集合

--drop FUNCTION `getParentList`
CREATE FUNCTION `getParentList`(rootId varchar(100))
RETURNS varchar(1000)
BEGIN
DECLARE fid varchar(100) default ‘‘;
DECLARE str varchar(1000) default rootId;   

WHILE rootId is not null  do
    SET fid =(SELECT parentid FROM treeNodes WHERE id = rootId);
    IF fid is not null THEN
        SET str = concat(str, ‘,‘, fid);
        SET rootId = fid;
    ELSE
        SET rootId = fid;
    END IF;
END WHILE;
return str;
END 

查询语句

select getParentList(‘001001001001001‘);   

select * from sbkfwh where FIND_IN_SET(id,getParentList(‘001001001001002‘))   

查子集合

--drop FUNCTION `getChildList`
CREATE FUNCTION `getChildList`(rootId varchar(100))
RETURNS varchar(2000)
BEGIN
DECLARE str varchar(2000);
DECLARE cid varchar(100);
SET str = ‘$‘;
SET cid = rootId;
WHILE cid is not null DO
    SET str = concat(str, ‘,‘, cid);
    SELECT group_concat(id) INTO cid FROM treeNodes where FIND_IN_SET(parentid, cid) > 0;
END WHILE;
RETURN str;
END  

查询语句

select getParentList(‘001001001‘);
select * from sbkfwh where FIND_IN_SET(id,getChildList(‘001001001‘))  
时间: 2024-10-15 02:15:34

mysql 递归查询父节点 和子节点的相关文章

使用mysql 游标,快速删除子节点及其附属节点

上篇,我写的是如何用数据存储,并通过html展示出树形的结构, 本篇我将讲述,如何通过存储过程,删除一个树节点及其附属节点.网上已经有非常多的关于mysql 游标使用的文章了, 为什么我还要写这篇文章呢,主要是想表达一些在软件设计领域的一些想法. 我不赞同在数据库中大量的使用存储过程, 因为我觉得随着软件系统的复杂度逐渐提高,维护的难度会逐渐的增大.而且大批量的使用存储过程,不利于后期通过分布式部署应用程序来解决日益增多的业务需求. 我推荐把存储过程用在处理一些不包含太多业务,批量操作数据的场景

父节点和子节点事件重复绑定(如click)

以click事件为例,当父节点或子节点绑定了click事件后,点击该节点,事件会发生冒泡传递,即会造成事件重复绑定,这时候需要阻止事件的冒泡,采用stopPropagation 或cancelBubble等. stopPropagation() 方法 定义和用法 不再派发事件. 终止事件在传播过程的捕获.目标处理或起泡阶段进一步传播.调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点. 语法 event.stopPropagation() 说明 该方法将停止事件的传播,

16、Cocos2dx 3.0游戏开发找小三之Node:父节点、子节点、傻傻分不清楚

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30476133 Cocos2d-x 采用了场景.层.精灵的层次结构来组织游戏元素, 与此同时,这个层次结构还对应了游戏的渲染层次,因此游戏元素可以组织成树形结构,称作渲染树. Cocos2d-x 把渲染树上的每一个游戏元素抽象为一个节点,即 Node. 一切游戏元素都继承自 Node,因此它们 都具有 Node 所提供的特性. Node 定义了一个可绘制

JQuery的父、子、兄弟节点查找,节点的子节点循环

JQuery的父.子.兄弟节点查找,节点的子节点循环: http://www.cnblogs.com/mingforyou/p/4410054.html

TreeView 点击触发父节点、子节点的连锁反应选中与取消

TreeView 通常和CheckBoxs一起使用,涉及到选中与取消时,连锁翻译触发父节点.子节点的选中与取消. 只供个人今后学习使用,如有涉及到相同,为个人转载,请告知博主. 当我选择一个父节点,希望该父节点下所有的子节点都被选中,取消一个节点,希望他所有的父节点都取消,例如  代码如下所示 //取消节点选中状态之后,取消所有父节点的选中状态 private void setParentNodeCheckedState(TreeNode currNode, bool state) { Tree

轻松学习JavaScript二十一:DOM编程学习之获取元素节点的子节点和属性节点

我们这里所说的获取元素节点的所有子节点包含元素子节点和文本节点两种.还是拿上一篇博文的代码实例进行 分析: <span style="font-size:18px;"><span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

C#中treeview的问题,如何区分根节点和子节点以及根节点和根节点的兄弟节点?

根节点的Level属性为0,一级子节点Level属性为1,二级子节点Level属性为2,以此类推:同级节点可以用索引.名称.文本来区分.用索引区分根节点时,TreeView.Nodes[0]就是第一个根节点,TreeView.Nodes[1]就是第二个根节点,以此类推:用索引区分一级子节点时,TreeView.Nodes[0].Nodes[0]为第一个根节点的第一个子节点,TreeView.Nodes[0].Nodes[1]是第一个根节点的第二个子节点,以此类推: 2.如何获取TreeView点

DevExpress TreeList 拖动时中如何判断源节点作为目标节点的子节点还是兄弟节点

Posted on 2012-01-10 14:02 marcozh 阅读(1738) 评论(3) 编辑 收藏 最近用了Dev的Treelist控 件,其中用到了拖动方法.众所周知的是,Dev的Treelist封装了原先用递归才能实现的树状显示,所以写代码非常方便.以前我做树形表,还需要一些 辅助字段如Level.HasChild等,维护起来也有点小麻烦,现在只要一个ParentId字段就够了,只要设置一下KeyFieldName和 ParentFieldName就可以了. 如: tlCateg

JS获取元素节点的子节点

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <titl

JS创建一个元素节点, 并把该节点添加为文档中指定节点的子节点

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <titl