2015-12-17 2 views
-1

У меня есть 3 таблицы, которые я присоединяюсь (содержание должно быть не имеют значения): Студенты курсов StudentsCoursesSQL множественных присоединиться к путанице

Мой запрос:

SELECT * 
FROM ((Students 
INNER JOIN StudentsCourses ON Students.ID 
StudentsCourses.studentID) 
INNER JOIN Courses on StudentsCourses.courseID = Courses.ID) 
ORDER BY Students.firstName 

Мою проблема:

Я понимаю в первом соединении, что я совмещаю студентов и студентов. Я не понимаю, к чему присоединяется второе объединение. Является ли это результатом участия студентов и студентов? Что-то вроде (Students + StudentsCourses) + Курсы. Как второе соединение знает, что такое StudentsCourses.courseID, если я явно не указал эту таблицу для присоединения?

+0

Извините, я не смог заставить форматирование работать. – user5689314

+0

studentCourses содержит только ключ для курсирования, чтобы получить имя курса, которое он должен объединить с первичным ключом. –

+0

Спасибо за исправление моего форматирования, но я не понимаю ответа. Я хочу подробно разобраться, что делает SQL на каждом шаге. Я понимаю, как работает первое соединение (присоединение к Студентам и Студентам). Я не понимаю, как это относится к второму соединению. – user5689314

ответ

0

Вы должны думать в терминах «наборы» в SQL. Когда вы определяете предложение FROM, вы готовите оператор, который будет интерпретироваться оптимизатором движка базы данных.

Что значит «если я не указал явным образом эту таблицу для присоединения?»

До сих пор в этом заявлении у вас есть только 2 варианта: «Студенты» или «Студенческие курсы», потому что это две таблицы, определенные перед вторым JOIN.

Смежные вопросы