Как объединить данные из нескольких таблиц в SQL


Думаю, я в сложной ситуации. Это место. У меня 3 таблицы в SQL Server.
Зачисление, Студент, Курс. (FYI, нет внешних ключей)
Столбцы таблицы - Студент - StudentId, StudentName
Курс - CourseId, CourseName
Зачисление - EnrollmentId, StudentId, CourseId, CourseResult

Примеры данных
Студент - s1, Сид
Курс - c1, Наука
Регистрация - 1, s1, c1, 80

Мне нужен SQL-запрос, который выбирает такие данные, как ниже

1, s1, Sid, c1, Science, 80

Я сделал это трудно в слое DAL с несколькими вызовами в базу данных. Но хотелось бы сделать это одним вызовом и в DB.

Любой для спасения!

Ответ 1

Используйте соединение.

select enrollment.*, student.*, course.* from enrollment
   inner join Student on enrollment.studentId = student.studentId
   inner join Course on enrollment.courseId = course.courseId

Ответ 2

В вашей модели данных действительно есть внешние ключи. Они не могут быть помечены как таковые в db, или вы этого не понимаете. Я также думаю, что станет понятнее, если в вашем списке вы ставите таблицу регистрации, между Студентом и курсом. Зачисление - это таблица, которая связывает ученика с курсом.

Я думаю, вы просто хотите внутреннее соединение в трех таблицах:

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

Ответ 3

Похоже, что несколько простых JOINs сделают это...

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

Ответ 4

Try:

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