[英]How to query for many to many relationship in Sql Server
我的问题是如何获取特定学生ID的课程名称
我试过了但是没用
select Course.CourseName from Course
where Course.CourseId in (
select Student.studentname ,StudentCourse.CourseId from Student inner join StudentCourse
on Student.StudentId = StudentCourse.StudentId
where Student.StudentId = 1)
您可能会忘记我的查询,因为我是SQL Server的新手,只要告诉我开发人员在SQL Server真实世界中究竟做了什么,以获取特定学生的课程名称
如您所说,您想知道这种方法,这只是基本观点
1)我们想看看CourseName。
SELECT CourseName FROM Course
2)一个学生可能有多个课程。 3)因此,我们还有一个表StudentCourse可以实现这一目标。 4)我们必须在此表中查找CourseName的ID
SELECT CourseID FROM StudentCourse
5)查找哪个学生(X是您想要的数字)参加这些课程。
WHERE StudentID = X
6)如果我们将它们放在一起看,我们现在可以通过步骤1获得所有的CourseName。但是,我们不需要所有的CourseName,而拥有所有X编号的学生需要的CourseID。 因此,如果我们将它们组合在一起,现在我们只需选择X接受的CourseName。
WHERE CourseID IN
7)所以我们的最终结果是
SELECT CourseName FROM Course WHERE CourseID IN
(SELECT CourseID FROM StudentCourse WHERE StudentID = X)
我正在使用左联接,以防万一您的学生没有分配任何课程,否则,如果使用内联接,您将不会获得任何结果;
SELECT
s.StudentID
,s.StudentNam
,sc.CourseID
,c.CourseName
FROM Student s
LEFT JOIN StudentCourse sc
ON s.StudentID = sc.StudentID
LEFT JOIN Course c
ON sc.CourseID = c.CourseID
WHERE s.StudentID = 1
尝试这个:
select CourseName from Course
where CourseId in
(select CourseId from StudentCourse
where StudentId = 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.