1  
          /    |    \  
        2      3      4  
    /   |  \     \      |
   5    6   7      8     9    mysql  或java 实现1.  递归深度查询(向下查询)   只查询想要的子节点数。不如3层。5层,10层2。 递归深度(向上查询)        比如:9的父节点有哪些 只要上面3个,或者5个。  

解决方案 »

  1.   

    infoid   name  parentid   weizhi
    0        book1    null       1
    2        book1    2          1
    3        book1    2          2
      

  2.   

    参考下贴中的方法。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/02/4142971.aspx
    MySQL中进行树状所有子节点的查询 
      

  3.   

    参考该贴中的。 (怀疑你看了吗?)方法三:利用中间表和过程执行完后会产生一个tmpLst表,nLevel 为节点深度,sCort 为排序字段。
      

  4.   

    DADQE3444444444444444444444444444444444WWWWWWWWWWWWWWWWW
      

  5.   


     CREATE FUNCTION `getChildLst`(rootId INT)
         RETURNS varchar(1000)
         BEGIN
           DECLARE sTemp VARCHAR(1000);
           DECLARE sTempChd VARCHAR(1000);
        
           SET sTemp = '$';
           SET sTempChd =cast(rootId as CHAR);
        
          WHILE sTempChd is not null DO
             SET sTemp = concat(sTemp,',',sTempChd);
             SELECT group_concat(id) INTO sTempChd FROM treeNodes where FIND_IN_SET(pid,sTempChd)>0;
           END WHILE;
           RETURN sTemp;
         END
    执行后:
    错误SQL 查询:CREATE FUNCTION `getChildLst` (
    rootId INT
    ) RETURNS varchar( 1000 ) BEGIN DECLARE sTemp VARCHAR( 1000 ) ;MySQL 返回:文档
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 
      

  6.   

    有些无语!如果别人给你的贴子你好象并不认真看===============================================================方法一:利用函数来得到所有子节点号。创建一个function getChildLst, 得到一个由所有子节点号组成的字符串.  
    mysql> delimiter //
    mysql>
    mysql> CREATE FUNCTION `getChildLst`(rootId INT)
        -> RETURNS varchar(1000)
        -> BEGIN
        ->   DECLARE sTemp VARCHAR(1000);
        ->   DECLARE sTempChd VARCHAR(1000);
        ->
        ->   SET sTemp = '$';
        ->   SET sTempChd =cast(rootId as CHAR);
        ->
        ->   WHILE sTempChd is not null DO
        ->     SET sTemp = concat(sTemp,',',sTempChd);
        ->     SELECT group_concat(id) INTO sTempChd FROM treeNodes where FIND_IN_SET(pid,sTempChd)>0;
        ->   END WHILE;
        ->   RETURN sTemp;
        -> END
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql>
    mysql> delimiter ;===============================================================
      

  7.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  8.   

    我就是不会mysql 创建函数
      

  9.   

     #10楼 已经很清楚的告诉你的了。
     delimiter //
      

  10.   

    set max_sp_recursion_depth=10;
    我设置为十报这个错
    Recursive limit 10 (as set by the max_sp_recursion_depth variable) was exceeded for routine createChildLst