2014-12-13 5 views
0

у меня есть три таблицы в MS Access следующим образом:SQL Присоединяйтесь к операции в нескольких таблицах

--Students(ID, Name, Class) 
--Subjects (ID, Name) 
--Marks (ID, StudentID, Subject.ID) 

связь выглядит следующим образом:

Marks.Subject = Subjects.ID 
Marks.StudentID = Students.ID 

Пожалуйста, помогите мне написать запрос, который может вернуть имя студентов и все имена субъектов и знаки этого учащегося.

В настоящее время у меня есть этот запрос, но он возвращает отметки отдельно.

select Students.Name, Marks.Obtained, Subjects.Name from Marks 
inner join Students on Marks.StudentName = Students.ID 

ответ

1

Вы присоединились students и marks таблицы с этим Регистрацией Subjects стола слишком

SELECT students.NAME, 
     marks.obtained, 
     subjects.NAME 
FROM (marks 
     INNER JOIN students 
       ON marks.studentname = students.id) 
     INNER JOIN subjects 
       ON marks.subject = subjects.id 
+0

Спасибо за ваш ответ, но он показывает ошибку синтаксиса ... –

+0

@TariqAbdullah Что именно ошибка говорит? –

+0

В нем говорится: «Ошибка синтаксиса (отсутствующий оператор) в выражении запроса» Marks.StudentName = Students.ID JOIN Subjects ON Marks.Subject = Subjects.I ". –

0

попробовать это:

select Students.Name, Marks.Obtained, Subjects.Name from Marks 
inner join Students on Marks.Subject = Subjects.ID 
Marks.StudentID = Students.ID 
+0

Что такое 'Субъекты 'в этом запросе? – Rhumborl

0
This will help you : 



select Students.Name, Marks.Obtained, Subjects.Name from Marks 
    inner join Students on Marks.StudentName = Students.ID 
    inner join Subjects on Marks.Subject = Subjects.ID; 
0

Попробуйте это:

SELECT a.name, b.obtained, c.name 
FROM studentTable a 
INNER JOIN marksTable b ON a.ID = b.StudentID 
INNER JOIN subjectsTable c ON b.Subject.ID = c.ID 
0

Я бы реорганизовать это следующим образом:

select A1.Name as 'Student Name' 
    , A3.Name as 'Subject' 
    , A2.Obtained as 'Mark Obtained' 
from Students AS A1 
    inner join Marks as A2 on A1.ID = A2.StudentID 
    inner join Subjects AS A3 on A2.Subject = A3.ID GO; 

Я надеюсь, что помогает.

+0

ли это «select Students.Name как« имя студента »,« Marks.Obtained »как« Mark Obtained », Subjects.Name как« Subject », Студенты AS Учащиеся Внутреннее соединение Знаки как знаки на Students.ID = Знаки.StudentName internal join Subjects AS Subjects on Marks.Subject = Marks.ID GO; "?? –

+0

Вы пишете это в SSMS или Access? – FirstLoser

+0

Я пишу это в Access –

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