我的数据库结构如下:
  id level  father  title
其中id主键 level 值 是0或者1 
0是主分类 1是从分类(隶属于主分类)如果是1则father里存的是所属于的主分类ID
如果是0 则该数据行中father列是0
title是分类的名字
   我现在想做的是怎么样才能让选择数据按照这种排列方法?
   如
   id level father title
   1   0     0     军队
   59  1     1     水军
  321  1     1     路军   2   0     0     商业
   41  1     2     小商品
   42  1     2     大商品类似这样 一个大类 然后后面跟小分类? 是不是可以用指针实现 我没用过指针 谁帮忙看看

解决方案 »

  1.   

    有关系的啊   这个表里存的是分类的信息
    你仔细看一下level 和father就发现关系了啊 
     我要达到的效果是 一行主分类数据 然后后面跟得是它的所有从分类行的数据 然后又是一行主分类数据 跟着所有从分类数据 这样一直取到所有数据
      

  2.   

    select id, level, father, title
    from tblname
    order by (case when father=0 then id*100000 else father*100000 end )+(case when father=0 then 0 else id end) 
      

  3.   

    另外有一点,这个只支持你说的二级,如果有三级那只好用存储过程了,一句sql写起来很复杂,效率也不高。
      

  4.   

    恩,能用存储过程实现也行的 还有能不能解释下 这个order by的意思 怎么用它排的?  我看不明白
      

  5.   

    还有比如我用指针找到这个是主分类的行了 怎么能把它显示到结果集里 供我调用呢 我现在用存储过程写东西返回结果集的时候 也只会用select 返回
      

  6.   

    (case when father=0 then id*100000 else father*100000 end )+(case when father=0 then 0 else id end)其实是一个用现在字段组成的表达式,形成一个新字段。就是根据father*1000000+ID来排序
       id level father title   newfield
       1   0     0     军队      1000000
       59  1     1     水军      1000059 
      321  1     1     路军      1000321   2   0     0     商业      2000000
       41  1     2     小商品    2000041
       42  1     2     大商品    2000042这样就可以达到效果了。