学生表 Student
Studentid | Studentid name |
1 | 张三 |
2 | 李四 |
3 | 王五 |
课程表 Course
Courseid | Coursename |
1 | Java |
2 | C# |
3 | C |
4 | C++ |
5 | Javascript |
关系表 StudentCourse
Studentid | Courseid |
1 | 1 |
1 | 4 |
2 | 1 |
2 | 3 |
2 | 5 |
题目是这样的:有学生表、课程表和关系表,查出学生所选的课程。要得出以下结果:
学生 | 所选课程 |
张三 | Java,C++ |
李四 | Java,C,Javascript |
请问这个SQL该如何写。
解析:通过for xml path,得出所有的课程结合stuff方法就可以将所选课程调整为题干所需要的形式。
测试正确的答案:
select distinct studentName , stuff((Select ','+CourseName from course ,studentcourse a where course.COURSEId=a.courseID and a.studentid=student.studentid for xml path('')),1,1,'')
from student ,studentcourse where student.studentid=studentcourse.studentid