我的:ID  :34
PID :0
tree:34,
name:中国
---------
ID  :45
PID :34
tree:34,45,
name:湖南
---------
ID  :56
PID :45
tree:34,45,56,
name:长沙

解决方案 »

  1.   

    cloud976 能否介绍一下详细
    吧关键源码展示一下,我不是很懂
      

  2.   

    id parent_id city上面是地区表的结构1 0 中国;
    2 1 湖南;
    3 2 长沙;上面是地区表的内容uid cid username usergender userphone...
    1    3   NO.1    1          7758521上面是用户表,得知城市id为3,则用递归可以查到 中国->湖南->长沙我不清楚wasuka的那个tree是什么,如果那样存的话修改会比较麻烦吧?
      

  3.   

    我的采用的是Area_Aid  Area_id Area_name
        1         10      北京
         2        1001    海淀区
         3        1002    朝阳区
         .          .       .
        .          .       .
        1xx      26        广西区
        1xx      2601      桂林市
        1xx      260101    七星区
        1xx      260102    独秀区这里是我的表结构,如果想取父类ID的话就是Area_id/100就可以得到。
    Area_Aid只是用于自动编号不用于排序或者怎么样的。楼主的问题其实可以直接存344556 ,不过前提是每层节点的值都不超过99。
    用数值运算的速度应该会优于字符串运算。
    存344556的话可以直接除以10获得父类ID。
    存34,45,56的话要用split函数来拆分。不过看wasuka的做法他增加了一个冗余字段来存储父类的ID。
      

  4.   

    我的tree字段不是要用split()处理的,而是便于SQL查找某分类的全部子分类,这样可以用索引
      

  5.   

    那还是要用字符串操作吧,我说的的split就是说用类似这样的函数来处理而已。