Мой сценарий таков. Мне нужно указать имена учеников и количество конкретных оценок, которые они получили (в этом случае класс А). Рассмотрим первый запрос, как:SQL-запрос, необходимый для подсчета записей
SELECT studentID, fullname
FROM tblStudents
Следующий запрос:
SELECT studentID, grade, Count(grade) AS CountOfGrade
FROM tblResults
GROUP BY studentID, grade
HAVING grade="A";
я могу объединить эти, так что я могу показать число А классов для каждого студента, вступив запрос:
SELECT tblStudents.studentID, tblStudents.fullname, tblResults.grade, Count(tblResults.grade) AS CountOfGrade
FROM tblStudents INNER JOIN tblResults ON tblStudents.studentID = tblResults.studentID
GROUP BY tblStudents.fullname, tblResults.grade
HAVING tblResults.grade="A";
Однако он не возвращает имена студентов, у которых нет класса A, только ученики, у которых есть как минимум 1. Я пробовал ЛЕВОЕ объединение, а не INNER, но это, похоже, не помогает.
Как я могу достичь этого, чтобы получить нулевые значения? Например:
Name Grade GradeCount
Bob A 1
Jim A 0
Sarah A 4
etc
Спасибо за это. Очень полезно, и я попал туда, в конце концов. Просто из интереса вы должны изменить имена таблиц? – RGriffiths