SELECT Student.S_ID, Student.First_Name, Student.Surname,
MAX(New_Models.Date_Issued) AS Last_Course_Date,
MAX(New_Models.Issue) AS Last_Issue,
MAX(New_Models.Model_ID) AS Last_Model_ID,
Student.Course_Level AS No_Training_Courses,
**COUNT(Exam_Student.Exam_ID) AS Final_Exam_Level**
FROM New_Models, Model_Student, Student, Exams, Exam_Student
WHERE New_Models.Model_ID=Model_Student.Model_ID
AND Student.S_ID=Model_Student.S_ID
AND (Student.S_ID)=Exam_Student.S_ID
AND ((Exams.Exam_ID)=Exam_Student.Exam_ID)
AND (Exams.Date_Taken)<=#12/31/2010#
GROUP BY Student.S_ID, First_Name, Surname, S.Course_Level
ORDER BY Student.S_ID, MAX(New_Models.Model_ID) DESC;
Все результаты отображаются в соответствии с требованиями, кроме команды COUNT. При сравнении с фактическим результатом, который должен прийти, только первая ячейка отличается и ошибочна.
Следует подсчитать, сколько экзаменов сдал студент.
Я могу ответить на любые вопросы, буду ждать вашей помощи.
SELECT
Student.S_ID,
Student.first_name,
Student.surname,
MAX(new_models.date_issued) AS last_course_date,
MAX(new_models.issue) AS last_issue,
MAX(new_models.model_id) AS last_model_id,
Student.course_level AS no_training_courses
FROM
new_models,
Student,
Model_Student
WHERE
new_models.model_id = Model_Student.model_id
AND Student.S_id = Model_Student.S_id
AND *strong text*Exam_ID IN (
SELECT COUNT(Exam_Student.Exam_id) AS Final_Exam_Level
FROM
Exams,
Exam_Student,
Student
WHERE
Student.S_ID = Exam_Student.S_ID
AND exams.date_taken <=#12/31/2010#
Group by Student.S_ID)
GROUP BY
Student.S_ID,
first_name,
surname,
Student.Course_level
ORDER BY
Student.S_id,
MAX(new_models.model_id) DESC;
Я не могу использовать INNER JOIN, поэтому мне было интересно, что можно сделать что-то подобное. Тем не менее, я не знаю, как сделать подзапрос!