如何在SQLServer2008中为多对多关系生成嵌套XML?

如何在SQLServer2008中为多对多关系生成嵌套XML?,sql,sql-server,xml,sql-server-2008,Sql,Sql Server,Xml,Sql Server 2008,情况是有课程和讲师,他们有多对多的关系(一门课程可以有多个讲师,一名讲师可以教授多门课程) 以下XML重复了课程名称: SELECT C.COURSE_ID "@course_id" , C.COURSE_NAME "Course_Name" --get lecturer id(s) of the course , CL.LECTURER_ID FROM COURSE C LEFT JOIN COURSE_LECTURER CL O

情况是有课程和讲师,他们有多对多的关系(一门课程可以有多个讲师,一名讲师可以教授多门课程)

以下XML重复了课程名称:

SELECT
    C.COURSE_ID "@course_id"
    ,   C.COURSE_NAME "Course_Name"
    --get lecturer id(s) of the course
    ,   CL.LECTURER_ID  

    FROM 
    COURSE C LEFT JOIN COURSE_LECTURER CL ON C.COURSE_ID = CL.COURSE_ID
    --LEFT JOIN AS ALL COURSES DON'T HAVE LECTURERS COULD BE INNER :)
FOR XML PATH('Course'), ROOT('Program')
它提供了以下输出(代码段):


关系数据库与SQL
ME123
关系数据库与SQL
HS123
但我想要的结果是:

<Course course_id="ISFND 1.1">
        <Course_Name>Relational Databases and SQL</Course_Name>
        <LECTURER_ID>ME123</LECTURER_ID>
        <LECTURER_ID>HS123</LECTURER_ID>
      </Course>

关系数据库与SQL
ME123
HS123

我想我的多对多sql中存在一些问题,可能是我需要在中使用,或者类似的东西。任何帮助都将不胜感激。谢谢。

课程讲师是课程和讲师之间的关系表,因为它是多对多关系。
SELECT
    C.COURSE_ID "@course_id"
    ,   C.COURSE_NAME "Course_Name"
    , (SELECT CL.LECTURER_ID
       FROM COURSE_LECTURER CL
       WHERE C.COURSE_ID = CL.COURSE_ID
       FOR XML PATH(''), TYPE)
FROM COURSE C
FOR XML PATH('Course'), ROOT('Program')
SELECT
    C.COURSE_ID "@course_id"
    ,   C.COURSE_NAME "Course_Name"
    , (SELECT CL.LECTURER_ID
       FROM COURSE_LECTURER CL
       WHERE C.COURSE_ID = CL.COURSE_ID
       FOR XML PATH(''), TYPE)
FROM COURSE C
FOR XML PATH('Course'), ROOT('Program')