想白了头的超级难题:不怕头疼的朋友帮我看看!!!! 万分感谢!!!要求:查询产品某个分类时,要求能遍历子分类和关联分类产品信息;举列:1) Category [分类表]
---------------------------------------------
CategoryId ParentId CategoryName
5 0 电子电工
1034990 5 流量开关
1032384 5 @电工仪器仪表 <@关联分类>
1033824 1032384 @电压互感器  <@关联分类>
1033835 1032384 @测量仪器 <@关联分类>
2) 展开的树结构如下:《@电工仪器仪表属于关联分类》
--------------------------------------------
5:电子电工
   |
   |-1034990:电子电工
   |---------1034990:流量开关
   |---------1032384:@电工仪器仪表
   |              |----1033824:@电压互感器         
   |              |----1033835:@测量仪器
3) Products [产品表]
--------------------------------------------
ProductId ProductName CategoryId
4) 如何遍历子分类和关联分类产品信息Select *  From Products a Inner Join Category b On a.CategoryId=b.CategoryId       Where   <如何写>假设当前目录是5)电子电工, 如何查出他的子分类和关联的产品信息呢?
加一个分类关系表也同样面临上述问题。由于产品表有40万条记录,因此尽量不能用in或子查询的方法,因为这样查询
会严重影响效率!!!谢谢各位有耐心看我的贴子!!!如果不晕头就是高手了,帮我支支招吧!谢谢!!!

解决方案 »

  1.   

    --遍历函数
    create function getclassinfo(@id char(8))
    returns @tabinfo table (A char(8),B char(8),C varchar(30))
    as
     begin
       declare @level as int
       set @level=0
       insert @tabinfo select * from Category where CategoryId=@id
       declare cur1 cursor local
       for select A from @tabinfo
       declare @cid int
       open cur1
       fetch next from cur1 into @cid
       while @@fetch_status=0
         begin
              insert @tabinfo select * from Category where ParentId=@cid
              fetch next from cur1 into @cid
          end
        return
    end--测试
    select * from getclassinfo(5)
      

  2.   

    TO: hchxxzx(NET?摸到一点门槛) 大哥能不能解释一下“ 动态加载的方式”是怎么操作?谢谢!!!
      

  3.   

    分类算法是啥?动态加载就是类似于CSDN这样的,利用XMLHTTP每一次只取出直属子节点的信息,不处理孙节点的信息。
      

  4.   

    在每行数据前加一个图标,点击此图标时,通过脚本传递此图标所代表的该记录的ID号,此脚本将此ID号传递到另外一个页面,根据此ID号求取所有父ID=此ID的记录,然后把结果送回来,显示.
    下面给你一个XMLHTTP求取脚本
    //以XML求取数据
    //webFileUrl:要读取的页面地址,可带参数
    function XmlPost(webFileUrl)
    {
    var result = "";
    var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
    xmlHttp.open("POST", webFileUrl, false);
    xmlHttp.send("");
    result = xmlHttp.responseText;
    return(result);
    }