У меня есть 3 таблицы и их столбцы следующим образом.

Table: Studenttable (StudentID)
Table: Subjecttable (SubjectID) 
Table: SubjectName  (Gradetable,gradevalue).

Я хочу использовать sql для выбора только записей учащихся, получивших оценку <= 6 как по математике, так и по английскому языку.

Но всякий раз, когда я запускаю запрос, у меня есть ученики со значением оценки <= 6 либо по математике, либо по английскому языку как часть моей записи.

Так выглядят отношения в таблице.Отношения Это образец вывода, в котором есть несколько записей с кандидатами по математике или английскому языку. (Который я хочу исключить из набора записей) OutputSample Это sql, который я использовал

Select tblCandidates.Candidate, tblCandidates.candidateName, tblSubject.subject, tblgrade.gradeValue из внутреннего соединения tblSubject (TBLCDARGE (TBLCandidates innerStudEntEdetEdEteTails on (tblCandidates.candIdateDIDATEDEDATEDATEDEDEDEDEDETEDETEDETELAILS (TBLCANDIDATE. (tblCandidates.SchoolCodeIDFK = tblStudentGradeDetails.SchoolCodeIDFK)) ON tblGrade.GradeID = tblStudentGradeDetails.Grade) ON tblSubject.SubjectID = tblStudentGradeDetails.Subject WHERE (((tblSubject.Subject) In ("Mathematics (Core)", "English Language")) И ((tblGrade.GradeValue)<=6));

-1
sopare 14 Ноя 2019 в 08:04
1
Отметьте соответствующую базу данных и опубликуйте запрос, который вы пытаетесь использовать. Также, пожалуйста, добавьте несколько примеров данных из другой таблицы с вашим ожидаемым результатом для лучшего понимания.
 – 
mkRabbani
14 Ноя 2019 в 09:14
Большое спасибо за внимание к моей проблеме. Пожалуйста, я отредактировал свой пост.
 – 
sopare
15 Ноя 2019 в 22:40

1 ответ

Вы действительно должны изменить tblStudentGradeDetails, чтобы иметь SubjectId и GradeId из соответствующих таблиц вместо Subject (имя) и Grade (имя).

SELECT
    c.CandidateID
,   c.CandidateName
,   s.Subject
,   tblGrade.GradeValue 
FROM tblCandidates c
JOIN tblStudentGradeDetails sg 
    ON sg.SchoolCodeIDFK = c.SchoolCodeIDFK
JOIN tblSubject s 
    ON s.Subject = sg.Subject
JOIN tblGrade g
    ON g.Grade = sg.Grade
WHERE   s.Subject IN ('Mathematics (Core)', 'English Language')
    AND g.gradeValue >= 6
0
ShadowZz 18 Ноя 2019 в 20:02