2015-12-17 124 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 

我的問題:

我在第一次加入時瞭解到我將學生和學生課程結合在一起。我不明白的是第二次加入的是什麼。這是學生和學生課程的結果嗎?像(學生+學生課程)+課程。如果我沒有明確指定要加入的表,第二次連接如何知道StudentsCourses.courseID是什麼?

+0

對不起,我無法使格式化工作。 – user5689314

+0

studentCourses只包含courid的關鍵,以獲取它必須與主鍵連接的課程名稱。 –

+0

感謝您修復我的格式,但我不明白答案。我期待詳細瞭解SQL在每個步驟中正在執行的操作。我瞭解第一次加入的工作方式(加入學生和學生課程)。我不明白它與第二次連接的關係。 – user5689314

回答

0

你必須用SQL中的「sets」來思考。當你定義你的FROM子句時,你正在準備一個將由數據庫引擎的優化器解釋的語句。

你是什麼意思「如果我沒有明確指定要加入的表?

到目前爲止,在本聲明中,您只有2個選項,Students或StudentCourses,因爲這些是在第二個JOIN之前定義的2個表。