现在可以这样 select......where pid=id  取出第2层的所有数据
把第2层的id组成数组2id
select .... where pid in 2id 取出第2层
有更好的方法吗?
我不要求数据的排序结构什么的 就全部读出就是了(知道一个节点 把他的子树的2层读出来)请教

解决方案 »

  1.   

    晕 我只要2个层 就添id     //id
    pid    //父id
    ppid   //父亲的父id
    name   //数据
    就可以了
      

  2.   

    如果你可以修改数据库的结构,建议你增加一个列allid,然后把当前节点包括所有上级节点的id放到这个字段里面.例如
    id,pid,name,layer,allid
    a0,0,a0,1,a0
    a1,a0,a1,2,a0-a1
    a2,a0,a2,2,a0-a2
    a3,a1,a3,3,a0-a1-a3
    在这种结构下很容易实现你需要的功能,而且添加修改节点的时候也不是很麻烦
      

  3.   

    id,pid,ppid这样的,你的表就有数据冗余,不合范式。
      

  4.   

    http://www2.uuzone.com/blog/555080192/32744.htm试看看前序遍历,感觉挺不错的
      

  5.   

    goddy123() 你好 如果我要把a0下的2层读出来 要怎么做?用like么?? (字符串操作)
    mysql是不是对字符操作相对数值对比效率要底点呢?我觉得是 
     
    hax(海曦) 你好 请教下你的方法lzkd(浪子快刀) 前序遍历要查好多次数据库 与我要的效果违背哦
    我就是要把2层数据找出来就可以 不用考虑数据的结构我是用javascript重建数据的结构的 所以不用考虑 就把以某一节点为根的2层的数据全部读出就可以
      

  6.   

    lzkd(浪子快刀) 前序遍历要查好多次数据库 与我要的效果违背哦
    我就是要把2层数据找出来就可以 不用考虑数据的结构
    ****************好象不是吧?找出任何一个子节点的下面所有子节点,只要2次查询就可以了.这实在不能算是多了吧?
      

  7.   

    实话实说,关于数据库的树结构,我试过很多都不满意。最后我使用了写文件方式,即由于树结构是不经常改变的。
    所以,在树结构发生变化时,将树结构写入xml文件中。这样在以后的查询中,关于树结构的计算转移至游览器端执行。