我想编写一个查询语句,按照顺利树形顺序返回查询数据,比如,先返回根结点,在返回,父结点的数据,如果父结点有子结点就跟着返回子结点数据,子结点还有子结点,在返回有的子结点,直到没有子结点为至,在返回下一个父结点,以此类推. 高手帮忙,万分感谢
这是一个树形的数据,表就叫temp
CATEGORY_ID PARENT_CATEGORY_ID name
0 -1 aaa 根结点
1 0 b1 父结点1
2 0 b2 父结点2
3 1 c 父结点1子结点
4 2 d 父结点2子结点
5 0 b3 父结点3
6 3 ee 子结点c的子结点显示结果如下0 -1 aa
1 0 b1
3 1 c
6 3 ee
2 0 b1
4 2 d
5 0 b3我想编写一个查询语句,按照顺利树形顺序返回查询数据,比如,先返回根结点,在返回,父结点的数据,如果父结点有子结点就跟着返回子结点数据,子结点还有子结点,在返回有的子结点,直到没有子结点为至,在返回下一个父结点,以此类推. 高手帮忙,万分感谢
这是一个树形的数据,表就叫temp
CATEGORY_ID PARENT_CATEGORY_ID name
0 -1 aaa 根结点
1 0 b1 父结点1
2 0 b2 父结点2
3 1 c 父结点1子结点
4 2 d 父结点2子结点
5 0 b3 父结点3
6 3 ee 子结点c的子结点显示结果如下0 -1 aa
1 0 b1
3 1 c
6 3 ee
2 0 b1
4 2 d
5 0 b3我想编写一个查询语句,按照顺利树形顺序返回查询数据,比如,先返回根结点,在返回,父结点的数据,如果父结点有子结点就跟着返回子结点数据,子结点还有子结点,在返回有的子结点,直到没有子结点为至,在返回下一个父结点,以此类推. 高手帮忙,万分感谢
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
我用照他做的,表也要用他的,但执行完就报错
call showChildLst(1);
就报
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine createChildLst
错误
拷的过程如下,一点都没有改,麻烦看一看CREATE PROCEDURE showChildLst (IN rootId INT)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst
(sno int primary key auto_increment,id int,depth int);
DELETE FROM tmpLst;CALL createChildLst(rootId,0);
select tmpLst.*,treeNodes.* from tmpLst,treeNodes where tmpLst.id=treeNodes.id order by tmpLst.sno;
END; CREATE PROCEDURE createChildLst (IN rootId INT,IN nDepth INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE cur1 CURSOR FOR SELECT id FROM treeNodes where pid=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmpLst values (null,rootId,nDepth); OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 DO
CALL createChildLst(b,nDepth+1);
FETCH cur1 INTO b;
END WHILE;
CLOSE cur1;
END;
加到那里,万分感谢