SQL帮助:选择语句连接一对多关系

1 sql sql-server concatenation

例如,我有两张桌子.第一张桌子是学生,第二张桌子是学生正在上的课程.如何使用select语句,以便我可以看到两列学生和课程,以便用逗号分隔课程.

谢谢.

Ben*_*ter 10

假设您使用的是SQL Server 2005:

这应该做你想要的 - 显然可以根据需要替换字段:

出于演示目的,请考虑以下两种表结构:

Students(
  STU_PKEY Int Identity(1,1) Constraint PK_Students_StuPKey Primary Key,
  STU_NAME nvarchar(64)
)

Courses(
  CRS_PKEY Int Identity(1, 1) Constraint PK_Courses_CrsPKey Primary Key,
  STU_KEY Int Constraint FK_Students_StuPKey Foreign Key References Students(STU_PKEY),
  CRS_NAME nvarchar(64)
)
Run Code Online (Sandbox Code Playgroud)

现在这个查询应该完成你以后的工作:

Select  s.STU_PKEY, s.STU_NAME As Student,
        Stuff((
            Select  ',' + c.CRS_NAME
            From    Courses c
            Where   s.STU_PKEY = c.STU_KEY
            For     XML Path('')
        ), 1, 1, '') As Courses 
From    Students s
Group By s.STU_PKEY, s.STU_NAME
Run Code Online (Sandbox Code Playgroud)

比目前接受的答案更简单...