Ответ 1
Используйте соединение.
select enrollment.*, student.*, course.* from enrollment
inner join Student on enrollment.studentId = student.studentId
inner join Course on enrollment.courseId = course.courseId
Думаю, я в сложной ситуации. Это место.
У меня 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.
Любой для спасения!
Используйте соединение.
select enrollment.*, student.*, course.* from enrollment
inner join Student on enrollment.studentId = student.studentId
inner join Course on enrollment.courseId = course.courseId
В вашей модели данных действительно есть внешние ключи. Они не могут быть помечены как таковые в 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
Похоже, что несколько простых 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
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