现有这么一堆数据:
01000000,哲学专业;01010000,哲学类;01010100,哲学;01010200,逻辑学;01010300,伦理学;01010400,宗教学;01015100,应用美学;01015200,宗教事务管理;01019900,哲学类其他专业;01020000,马克思主义理论类;01020100,马克思主义基础;01020200,国际共户主义运动;01020300,中国共产党党史;01020400,中国革命史;01020500,中国社会主义建设;01020600,科学社会主义;01029900,马克思主义理论类其他专业; ...怎么在树上标示出来?谢谢

解决方案 »

  1.   

    一般结构设计为
    id,名称(如哲学专业),编号(如0100000),pID(上一级ID)
    如果数据量不是特别多的话,可以用递归的方式读取
      

  2.   

    01000000-哲学专业
      01010000-哲学类
        01010100-哲学
        01010200-逻辑学
        01010300-伦理学
        01010400-宗教学
        01015100-应用美学
        01015200-宗教事务管理
        01019900-哲学类其他专业
      01020000-马克思主义理论类
        01020100-马克思主义基础
        01020200-国际共户主义运动
        01020300-中国共产党党史
        01020400-中国革命史
    ...算法是可以用递归,但实际应用效率太低,又耗资源,
    数据多的情况下可采用:
    一次生成一层,展开某节点时再次生成其下级节点
    取第一层:
       select 编号,类别 from table where 编号 like '__000000'
    第二层
       select 编号,类别 from table where 编号 like '____0000'
    ...
    数据不多,就按照以上编号排序,然后两位两位编码规则,算出其父子关系。
      

  3.   

    先生成父节点,但是不要生成子节点,只需要知道父节点下是否有子节点,用 [select 'x' from table where ...],如果有值就在父节点前有个‘+’。等到实际按下‘+’的时候再生成子节点,依此类推。
    可以通过对字符串的解析来进行节点的分类。
      

  4.   

    ID号是分成三段组成的吧。其他的数据关系暂无法得知......这样就好办了,你自己处理下这个ID就行了。copy()下,按段取其中的分段码就可以知道节点的父节点。只要查找到了父节点就可以添加子节点了