2012-05-16 2 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 firstName, lastName, courseName, semesterName и mark для каждой строки в таблице mark.

Я попытался сделать это с помощью 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-server? вы уверены, что в таблицах есть данные с правильными идентификаторами? –

+0

показать мне вашу структуру стола ... –

+1

Что вы имеете в виду * вы не можете *? – Zeemee

ответ

1

В Ms 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

Try стиль тета присоединиться:

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 work :( спасибо –

+0

Это странно, потому что я тестировал его на Access DB (2003), и он работает. – devarc

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