Как объединить данные из нескольких таблиц в SQL - PullRequest
3 голосов
/ 07 апреля 2011


Думаю, я в сложной ситуации.Вот сцена.
У меня есть 3 таблицы в SQL Server.
Регистрация, студент, курс.(К вашему сведению, внешних ключей нет)
Столбцы таблицы:
Student - StudentId, StudentName
Course - CourseId, CourseName
Enrollment - EnrollmentId, StudentId, CourseId, CourseResult

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

Я хотел бы запрос SQL, который выбирает данные, как показано ниже

1, s1, Sid, c1, Science, 80

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

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

Ответы [ 4 ]

15 голосов
/ 07 апреля 2011

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

select enrollment.*, student.*, course.* from enrollment
   inner join Student on enrollment.studentId = student.studentId
   inner join Course on enrollment.courseId = course.courseId
6 голосов
/ 07 апреля 2011

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

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

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 голосов
/ 07 апреля 2011

Попробуйте:

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
2 голосов
/ 07 апреля 2011

Похоже, что несколько простых 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...