是这样的我有3张表,商品表A,分类表B,品牌C
前者都是后者都是父表
A是B的父表 B是C的父表
请问怎么写一个存储过程,并且调用这个存储过程 查询一个类似树形结构的东西展现出来?

解决方案 »

  1.   

    select a.* , b.* , c.*
    from a, b, c
    where a.id = b.aid and b.id = c.bid假设表之间关联为:a.id = b.aid and b.id = c.bid
      

  2.   

    服装 
        男装
            劲霸男装
                   外套
                   夹克
        女装 
            OLEY
                短袖
    类似这样的就行了。
      

  3.   

    服装  
      --男装
          --劲霸男装
                -- 外套
                -- 夹克
      --女装  
          --OLEY
                --短袖
      

  4.   


    /*
    标题:SQL SERVER 2000中树查询显示层次
    作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 
    时间:2010-02-4
    地点:新疆乌鲁木齐
    */create table tb(id int , pid int , name varchar(10))
    insert into tb values(1 , 0 , '广东省')
    insert into tb values(2 , 1 , '广州市')
    insert into tb values(3 , 1 , '深圳市')
    insert into tb values(4 , 2 , '天河区')
    insert into tb values(5 , 3 , '罗湖区')
    insert into tb values(6 , 3 , '福田区')
    insert into tb values(7 , 3 , '宝安区')
    insert into tb values(8 , 7 , '西乡镇')
    insert into tb values(9 , 7 , '龙华镇')
    insert into tb values(10 ,7 , '松岗镇')
    gocreate function f_getnum(@id int) returns varchar(4000)
    as
    begin
      declare @ret varchar(4000) , @pid int
      set @ret = right('0000' + rtrim(@id) , 4)
      while exists(select 1 from tb where id = @id and pid <> 0 )
      begin
        select @pid = pid from tb where id = @id and pid <> 0
        set @id = @pid
        set @ret = right('0000' + rtrim(@id) , 4) + @ret
      end
      return @ret
    end
    goselect id , name , REPLICATE('-' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum
    drop table tb/*
    id          name       name           
    ----------- ---------- ---------------
    1           广东省        广东省
    2           广州市        -广州市
    4           天河区        --天河区
    3           深圳市        -深圳市
    5           罗湖区        --罗湖区
    6           福田区        --福田区
    7           宝安区        --宝安区
    8           西乡镇        ---西乡镇
    9           龙华镇        ---龙华镇
    10          松岗镇        ---松岗镇(所影响的行数为 10 行)*/
    create table tb (id int , Name varchar(10) , pid int )
    insert into tb values(1 ,'广东省' , 0) 
    insert into tb values(2 ,'四川省' , 0) 
    insert into tb values(3 ,'湖北省' , 0) 
    insert into tb values(4 ,'东莞市' , 1) 
    insert into tb values(5 ,'广州市' , 1) 
    insert into tb values(6 ,'天河区' , 5) 
    insert into tb values(7 ,'绵阳市' , 2) 
    insert into tb values(8 ,'武汉市' , 3) 
    insert into tb values(9 ,'汉口区' , 8) 
    insert into tb values(10,'随州市' , 3)
    gocreate function f_getnum(@id int) returns varchar(4000)
    as
    begin
      declare @ret varchar(4000) , @pid int
      set @ret = right('    ' + rtrim(@id) , 4)
      while exists(select 1 from tb where id = @id and pid <> 0 )
      begin
        select @pid = pid from tb where id = @id and pid <> 0
        set @id = @pid
        set @ret = right('    ' + rtrim(@id) , 4) + @ret
      end
      return @ret
    end
    goselect id , name , REPLICATE('  ' , len(dbo.f_getnum(id))/4 - 1) + name as name from tb order by dbo.f_getnum(id)drop function f_getNum
    drop table tb/*
    id          name       name          
    ----------- ---------- --------------
    1           广东省        广东省
    4           东莞市          东莞市
    5           广州市          广州市
    6           天河区            天河区
    2           四川省        四川省
    7           绵阳市          绵阳市
    3           湖北省        湖北省
    8           武汉市          武汉市
    9           汉口区            汉口区
    10          随州市          随州市(所影响的行数为 10 行)
    */
      

  5.   

    查询的结果是这样的:1 衣服 2 裤子 1 7 白斯顿 2
    1 衣服 3 短袖 1 4 超人短袖 3
    1 衣服 3 短袖 1 5 无敌短袖 3
    1 衣服 2 裤子 1 6 XX裤子 2
    1 衣服 1 外套 1 1 劲霸男装 1
    1 衣服 1 外套 1 2 迪奥 1
    1 衣服 1 外套 1 3 OLEY 1
    2 鞋子 6 运动鞋 2 10 安踏 6
    2 鞋子 6 运动鞋 2 9 李宁 6
    2 鞋子 6 运动鞋 2 8 nike 6
      

  6.   

    我不会用存储过程,在学习中。
    请问2楼大侠你的这个是mysql的吗?go是什么意思