2012-05-16 105 views
1

我有四個表INNER JOIN到多個表

student 
------- 
id, int 
firstName, varchar 
lastName, varchar 

course 
------ 
id, int 
name, varchar 

semester 
-------- 
id, int 
name, varchar 

mark 
---- 
studentId, int 
courseId, int 
semesterId, int 
mark, int 

我想要做一個SQL查詢retrives firstNamelastNamecourseNamesemesterNamemarkmark表的每一行。

我試着用INNER JOIN做,但是我不能爲多個表做INNER JOIN。

該代碼我到達最後

select student.firstName, student.lastName, course.name, semester.name, mark.mark 
from mark 
INNER JOIN student ON student.id = mark.studentId 
INNER JOIN course ON course.id = mark.courseId 
INNER JOIN semester ON semester.id = mark.semesterId 
+3

那應該工作..你在用什麼sql? MySQL/MS-SQL服務器?你確定表中有正確ID的數據嗎? –

+0

顯示你的表格結構... –

+1

你的意思是*你不能*? – Zeemee

回答

1

在微軟的Access,你必須在查詢中包括括號中有多個聯接:

select st.firstName, st.lastName, c.name, sm.name, m.mark 
from (((mark m 
     INNER JOIN student st ON st.id = m.studentId) 
     INNER JOIN course c ON c.id = m.courseId) 
     INNER JOIN semester sm ON sm.id = m.semesterId) 
+0

謝謝,這是偉大的,它現在的作品:) –

1

嘗試THETA式聯接:

select student.firstName, student.lastName, course.name, semester.name, mark.mark 
from mark, student ,course, semester 
WHERE student.id = mark.studentId AND course.id = mark.courseId AND semester.id = mark.semesterId 
+0

不幸的是,dosen't工作:( 謝謝你 –

+0

這很奇怪,因爲我已經在Access數據庫(2003)測試它,它的工作原理。 – devarc