有2个表 
一个student表 
有ID name两个字段
1   张三
2  李四
一个class表
studentID  classname
1                  语文
1                   数学
2                  英语
2                   生物最后要查出student表中每个学生对应的课程
ID    name         classname
1    张三           语文,数学
2    李四          英语,生物这个在存储过程中怎么写啊

解决方案 »

  1.   

    select a.id,a.name, stuff(','+b.classname,1,1,'') from student a inner join class b on a.id=b.studentid for xml path('')
    这样应该就可以啦,你试试看
      

  2.   

    还有其他方法吗 不止一个字段需要获取另一个表的数据 上面只是举个例子多个字段也可以啊,有几个字段就写几个stuff就可以啊。或者你直接把你现在的问题说出来
      

  3.   

    select 
    a.id
    ,a.name
    ,classname=stuff((SELECT ','+classname FROM class b WHERE a.id=b.studentid for xml path('')),1,1,'') 
    from student a 
      

  4.   

    --测试数据
    if not object_id(N'Tempdb..#student') is null
    drop table #student
    Go
    Create table #student([ID] int,[name] nvarchar(22))
    Insert #student
    select 1,N'张三' union all
    select 2,N'李四'
    GO
    if not object_id(N'Tempdb..#class') is null
    drop table #class
    Go
    Create table #class([studentID] int,[classname] nvarchar(22))
    Insert #class
    select 1,N'语文' union all
    select 1,N'数学' union all
    select 2,N'英语' union all
    select 2,N'生物'
    Go
    --测试数据结束
    SELECT  ID ,
            name ,
            STUFF(( SELECT  ',' + classname
                    FROM    #class
                    WHERE   studentID = #student.ID
                  FOR
                    XML PATH('')
                  ), 1, 1, '') AS classname
    FROM    #student;