Info表有很多商品信息,其中Class为类别字段,类别是用"/"隔开的,参考值
Shopping/Publications/Books/Children/Biography //Shopping为大类 Publications为二级小类 Books为三级小类
Shopping/Publications/Digital/Arts
Health/Animal/AlternativeMedicine/Exotics
Health/test/怎么使用类别访问这些信息呢?就是点击一个类别进入紧邻的下一子类进行访问。比如点击大类Shopping下面显示子类Publications,点击Publications下面显示Books,Digital两个类别需要注意的是点击Shopping后只显示下面的Publications类别而不显示Publications下面的子类。这样最终使得主信息能够按照类别的路径访问。现在系统缺少类别表,怎么办?
系统有数万条数据,恐怕得单独弄出来个类别表,以便点击Shopping类别时只显示其下面紧邻的子类,否则分组查询速度太慢了估计。或者谁有更好的方法解决?就是根据CLASS的字段值弄出来一个类别表貌似也异常困难我要实现的展示方式如下
大类点击后显示紧邻的子类
Shopping 点击后显示-> Publications ->点击后显示->Books和Digital
Health   点击后显示->Animal和test

解决方案 »

  1.   

    用SQL构造一个自反结构的表就可以啊,最重要的两个字段是 ID--自动增长列  PID--父级ID,关联ID字段
    当你要查询子集时需要知道父级ID,就可以根据PID关联。
      

  2.   


    select class from Info 返回一个class列表list<string> lstClass.
    List<string> li = new List<string>();
    foreach(var item in lstClass)
    {
        string[] tmp = tiem.Split('/');
        foreach(var str in tmp)
        {
            if( ! li.contains(str))
            {
                li.Add(str);
            }
        }
    }
    return li;最后返回的li就是你要的东西
      

  3.   

    declare @text varchar(2000)
    set @text = (某一个class)--可能需要游标来
    where(@text!='')
    begin
       declare @temp varchar(20)
       if(Charindex('/',@text))>-1)
       begin
          set @temp=Substring(@text,0,charindex('/',@text))--取出某个字段的开头到第一个/之间的内容,然后再做需要的操作
          set @text=substring(@text,charindex('/',@text)+1,len(@text))
       end
       else
       begin 
         --若最后的/后面有字段而不是/结尾的字段
       end
    end
      

  4.   

    这个觉的可行,我上一贴用SQL处理Charindex是不行的,看来使用游标是可以滴。
    这样只能先处理大类,修改代码后再处理二级小类,再修改代码处理三级小类。总共五级小类,Info表按class 分组后的数据大概2万条,处理五次
    是这个意思吧,我能想到的目前也是这种比较笨的方法
      

  5.   

    我在上一贴中已经说过了,还不如直接在数据库里创建表去做那些事,关键不是拆分的问题。而是你生成的类别的其它字段,如:父编号这种。。我写的最后没有给@text这个赋空值,会是个死循环,自己注意点吧。
    你给我一百分,我快昏了,幸亏我记性好,要不我还以为我叫人给我自己倒的分呢。