猜猜我处境很复杂。继承人现场
我在SQL Server中有3个表
报名,学生,课程。 (仅供参考,没有外键)
表格列为
学生 - StudentId,学生姓名
课程 - CourseId,CourseName
注册 - EnrollmentId,StudentId,CourseId,CourseResult
示例数据
学生 - s1,Sid
课程 - c1,科学
报名 - 1,s1,c1,80
我想要一个SQL查询来选择下面的数据
1,s1,sid,c1,Science,80
我通过多次调用数据库在DAL层中做得很好。但是想在一次通话中和在DB中这样做。
任何人都可以救援!
答案 0 :(得分:15)
使用联接。
select enrollment.*, student.*, course.* from enrollment
inner join Student on enrollment.studentId = student.studentId
inner join Course on enrollment.courseId = course.courseId
答案 1 :(得分:6)
数据模型中实际存在外键。它们可能没有在数据库中标记为这样,或者您没有意识到它。我还认为,如果在您的列表中您将“注册”表放在“学生”和“课程”之间,则会更加清晰。注册是将学生与课程联系起来的表格。
我想你只想在这三个表上找到inner join:
SELECT e.EnrollmentId, s.StudentId, c.CourseId, c.CourseName, e.CourseResult
FROM Student AS s
JOIN Enrollment AS e ON s.StudentId = e.StudentId
JOIN Course AS c on e.CourseId = c.CourseId
答案 2 :(得分:2)
好像有几个简单的JOIN就可以做到......
select
e.EnrollmentId
,s.StudentId
,s.StudentName
,c.CourseId
,c.CourseName
,e.CourseResult
from Enrollement e
inner join Course c on e.CourseId = c.CourseId
inner join Student s on e.StudentId = s.StudentId
答案 3 :(得分:2)
尝试:
SELECT e.EnrollmentId, s.StudentId, s.StudentName, c.CourseId, c.CourseName, e.CourseResult
FROM Student s JOIN
Enrollment e ON s.StudentId = e.StudentId JOIN
Course c ON e.CourseId = c.CourseId