一个树,下面的子树和节点无限制,
怎么能做个查询,能够获取树中某一个节点其下属于它自己的所有节点的各种信息,而且还要遍历所有节点获取所有节点其下节点的信息,我研究了几天,但是除了递归嵌套,实在想不出什么更好的,速度更快的办法,数据库里有一个ID数据,是表示节点的唯一标志,没有重复,还有一个PID,表示该节点所属的父节点ID,还有一个TLEVEL,表示该节点在树中属于第几层,
我的方法是根据该节点的ID关联PID,先获取它下一层所有节点的信息,然后再根据这层里属于它的所有节点ID获取下下一层的信息,依次类推,但是这样的做法太慢了,尤其是树的层次和节点变多了以后,简直是无法忍受的慢,大家有没有更好的办法呢?也欢迎大家来讨论!来者有分!

解决方案 »

  1.   

    http://www.hz0752.com/UploadFile/2005-5/2005524155546821.jpg是不是想要上图的效果
      

  2.   

    循环到下面有很多节点根本就不是你的,TLEVEL基本只能用来做做判断而已!
      

  3.   

    to bbsftp(烨) :不是这样的,是数型的,有很多层次的那种!而且层次不确定,你这个的只有一个层次!
      

  4.   

    是不是要这种效果啊
    http://www.hz0752.com/UploadFile/2005-5/2005527203753567.jpg
      

  5.   

    1.加LEVEL
    2.首先建立TopItem或者它的直接下级,然后在点树的时候再展开节点信息.
      

  6.   

    to bbsftp(烨):对,就是这个效果!
      

  7.   

    to  5207(踏雪):加LEVEL了,但是你说的第二个不是太明白,另外,我是说在数据库里做查询的时候怎么做,在treeview控件里这个好办,毕竟人是活的,电脑是死的!
      

  8.   

    如果是 Oracle 数据库,倒是可以用 select ...from ... start with...connect by prior...这样的语句快速查询。别的数据库不知道了。dacong(大聪) 上面也提到了。
      

  9.   

    这个问题我也碰到过,嵌套到后来简直无法容忍其“慢”,在网上搜个第三方控件DBTREE,带例子,你会发现实现你的目标非常EASY。
      

  10.   

    哦,ORACLE可以啊,不过我的数据库是SQL SERVER的!DBTREE控件我用不上它,只是要查询而已,但是这个问题我查找了关于DBTREE的算法,基本上没有什么帮助!它只能获取全局树,对于获取子树下的节点信息方面,几乎没有任何帮助!还是只能通过挨个遍历,遍历里面再加嵌套才能实现!真是郁闷!