如何在SQL中合并来自多个表的数据

时间:2011-04-07 03:40:26

标签: sql sql-server join


猜猜我处境很复杂。继承人现场 我在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中这样做。

任何人都可以救援!

4 个答案:

答案 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