有如下的数据库表table1  
tid  tup name  
1   0      土木工程              
2   0   管理类                          
4   0   计算机类              
5   1   路桥              
6   4    网页              
7   1    测量              
8   4   数据库              
9   2   工商管理              
10   2   工程管理  
这是做为我新闻分类的表,tid表示类的id,tup表示上一级类的id,如果是0表示是一级目录.  
如何用sql输出下面的样子.  
可以用asp/aspx等程序语言控制  
土木工程  
--路桥 测量  
管理类  
--工商管理 工程管理  
计算机类  
--网页 数据库 
还有就是    
获得了id=5的参数  
如何用一句sql  
输出  土木工程  路桥

解决方案 »

  1.   

    难道MYSQL没高手了
    晕。才开始学MYSQL,积极性都被打击了
      

  2.   

    这个不关MYSQL的事,SQL语句的控制问题,不过只通过一条SQL似乎是无解的,反正凭我的智商是想不出来
      

  3.   


    create table table1(tid int,tup int,name varchar(10))
    goinsert into table1
    select 1,0,'土木工程' union
    select 2,0,'管理类' union
    select 4,0,'计算机类' union
    select 5,1,'路桥' union
    select 6,4,'网页' union
    select 7,1,'测量' union
    select 8,4,'数据库' union
    select 9,2,'工商管理' union
    select 10,2,'工程管理' 
    go
    create function fn_join(@id int)
    returns varchar(30)
    begin
    declare @sql varchar(30)
    set @sql=''
    select @sql=@sql+name+',' from table1 where tup=@id
    return stuff(@sql,len(@sql),1,'')
    end
    goselect name 大类,dbo.fn_join(tid) 小类
    from table1
    where tup=0
    go
    drop function fn_join
    drop table table1
      

  4.   

    楼上的是几句话哦
    MYSQL好象不支持子查询
      

  5.   

    SELECT tname from list where tid = 5  
     union  select tname from list  where tid in(SELECT tup from list  WHERE tid=5);
    delimiter ;; 
    create procedure mu(in s INT ,IN e INT)
     begin
       while s <=e do
              SELECT tname from list where tid = s
              union select tname from list where tUP= s;
      set s=s+1;
       end while;
     end
     ;;
    delimiter ;