tb_yx:
---yxID---------yxmc---------
    1         经管学院
    2         信息学院
    3         建工学院tb_zy:
---zyID--------zymc-------yxID-------
    1          会计        1
    2         信息工程     2tb_xm:
---xmID--------xmmc------
    1          aaa       
    2          bbb
    3          ccctb_fw:
---id------xmID-------yxID----------zyID---------
    1        1          1           null
    2        1        null           2
    3        2          2           null
    4        2          3           null
    5        2        null           1
    6        3        null           1
    7        3        null           2希望得到的效果:
------xmID-------xmmc--------------fw--------
       1         aaa           经管学院学生,信息学院信息工程专业学生     
       2         bbb           信息学院学生,建工学院学生,经管学院会计专业学生
       3         ccc           信息学院信息工程专业学生 , 经管学院会计专业学生
   求解~~~有问题尽管问只为有最好的解答~~~~

解决方案 »

  1.   


    ---yxID---------yxmc--------- 
        1        经管学院 
        2        信息学院 
        3        建工学院 
    你将这个表的YXMC加一个学生不就好了吗
      

  2.   

    if object_id('f_str') is not null
        drop function f_str
    go
    create function dbo.f_str(@XMzdbh int) returns varchar(100)
    as
    begin
        declare @str varchar(1000)
        select @str = isnull(@str + ',','') + isnull(fenlei1,fenlei2) from [tb_fanwei] where [XMzdbh] = @XMzdbh
        return @str
    end
    go
    select *,fenlei=dbo.f_str(xmzdbh) from TB_XIANGMU 这是之前的我要加上学生,如果是专业就加专业学生
      

  3.   

    http://topic.csdn.net/u/20090731/09/9a5a4ae1-9740-410d-ac5e-fb6ea09b18f6.html
      

  4.   

    try--
    if object_id('f_str') is not null 
        drop function f_str 
    go 
    create function dbo.f_str(@XMzdbh int) returns varchar(100) 
    as 
    begin 
        declare @str varchar(1000) 
        select 
          @str = isnull(@str + ',','') 
               + case when fenlei1 is null then fenlei2+'学生' 
                      else fenlei1+'专业学生'
                  end
        from [tb_fanwei] 
        where [XMzdbh] = @XMzdbh 
        return @str 
    end 
    go 
      

  5.   

    大虾们请留步。看看这个在说
    树哥的结果应该是。。
    -----xmID-------xmmc--------------fw-------- 
          1        aaa          经管学院学生,信息工程专业学生    
          2        bbb          信息学院学生,建工学院学生,会计专业学生 
          3        ccc          信息工程专业学生 , 会计专业学生 但是我要的结果是:
    -----xmID-------xmmc--------------fw-------- 
          1        aaa          经管学院学生,信息学院信息工程专业学生    
          2        bbb          信息学院学生,建工学院学生,经管学院会计专业学生 
          3        ccc          信息学院信息工程专业学生 , 经管学院会计专业学生 
    专业前面要加上其所在的学院有办法吗???
      

  6.   


    tb_zy: 
    ---zyID--------zymc-------yxID------- 
        1          会计        1 
        2        信息工程    2 那你在函数里应该把这个表的字段加进去
      

  7.   

    if object_id('f_str') is not null 
        drop function f_str 
    go 
    create function dbo.f_str(@XMzdbh int) returns varchar(100) 
    as 
    begin 
        declare @str varchar(1000) 
        select 
          @str = isnull(@str + ',','') 
               + case when fenlei1 is null then fenlei2+'学生' 
                      else [xx]+fenlei1+'专业学生'
                  end
        from [tb_fanwei] 
        where [XMzdbh] = @XMzdbh 
        return @str 
    end 
    go 我想在【xx】处加入学院名称,但是我不知道在这里怎样根据tb_zy中的yxID获得院系名称
      

  8.   


    /*---------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2009-09-17 19:50:57
    --  Version: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) 
    Mar 29 2009 10:27:29 
    Copyright (c) 1988-2008 Microsoft Corporation
    Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)---------------------------------*/
    --> 生成测试数据表:tb_yxIF NOT OBJECT_ID('[tb_yx]') IS NULL
    DROP TABLE [tb_yx]
    GO
    CREATE TABLE [tb_yx]([yxID] INT,[yxmc] NVARCHAR(10))
    INSERT [tb_yx]
    SELECT 1,N'经管学院' UNION ALL
    SELECT 2,N'信息学院' UNION ALL
    SELECT 3,N'建工学院'
    GO
    --SELECT * FROM [tb_yx]--> 生成测试数据表:tb_zyIF NOT OBJECT_ID('[tb_zy]') IS NULL
    DROP TABLE [tb_zy]
    GO
    CREATE TABLE [tb_zy]([zyID] INT,[zymc] NVARCHAR(10),[yxID] INT)
    INSERT [tb_zy]
    SELECT 1,N'会计',1 UNION ALL
    SELECT 2,N'信息工程',2
    GO
    --SELECT * FROM [tb_zy]--> 生成测试数据表:tb_xmIF NOT OBJECT_ID('[tb_xm]') IS NULL
    DROP TABLE [tb_xm]
    GO
    CREATE TABLE [tb_xm]([xmID] INT,[xmmc] NVARCHAR(10))
    INSERT [tb_xm]
    SELECT 1,'aaa' UNION ALL
    SELECT 2,'bbb' UNION ALL
    SELECT 3,'ccc'
    GO
    --SELECT * FROM [tb_xm]--> 生成测试数据表:tb_fwIF NOT OBJECT_ID('[tb_fw]') IS NULL
    DROP TABLE [tb_fw]
    GO
    CREATE TABLE [tb_fw]([id] INT,[xmID] INT,[yxID] INT,[zyID] INT)
    INSERT [tb_fw]
    SELECT 1,1,1,NULL UNION ALL
    SELECT 2,1,NULL,2 UNION ALL
    SELECT 3,2,2,NULL UNION ALL
    SELECT 4,2,3,NULL UNION ALL
    SELECT 5,2,NULL,1 UNION ALL
    SELECT 6,3,NULL,1 UNION ALL
    SELECT 7,3,NULL,2
    GO
    --SELECT * FROM [tb_fw]-->SQL查询如下:
    if object_id('f_str') is not null 
        drop function f_str 
    go 
    create function dbo.f_str(@XMzdbh int) 
    returns varchar(100) 
    as 
    begin 
        declare @str varchar(1000) 
        select @str = isnull(@str + ',','') + isnull(b.[yxmc]+'学生',c.[zymc]) 
        from [tb_fw] a
    LEFT JOIN [tb_yx] b 
    ON a.yxID=b.yxID
    LEFT JOIN (
    SELECT a.zyID,b.yxmc+a.zymc+'专业学生' AS zymc
    FROM [tb_zy] a 
    LEFT JOIN [tb_yx] b 
    ON a.yxID=b.yxID
    ) AS  c 
    ON a.[zyID]=c.[zyID]
    where a.[xmID] = @XMzdbh 
        return @str 
    end 
    go 
    select *,fenlei=dbo.f_str([xmID]) from [tb_xm] 
    /*
    xmID        xmmc       fenlei
    ----------- ---------- ----------------------------------------------------------------------------------------------------
    1           aaa        经管学院学生,信息学院信息工程专业学生
    2           bbb        信息学院学生,建工学院学生,经管学院会计专业学生
    3           ccc        经管学院会计专业学生,信息学院信息工程专业学生(3 行受影响)*/