Я пытаюсь построить заявление, которое будет показывать first_name
, last_name
, course_no
, description
для instructor
что teaches
наиболее ява курсов. Мой оператор max
показывает максимальное количество курсов, однако, когда я выполнил полное заявление, я не получил никаких результатов. Ниже приводится запрос:HAVING COUNT (*) с MAX() подзапросом
SELECT first_name, last_name, course_no, description
FROM(
SELECT i.first_name, i.last_name, c.course_no, c.description
FROM instructor i INNER JOIN section s
ON i.instructor_id = s.instructor_id
JOIN course c ON c.course_no = s.course_no
WHERE c.description LIKE '%Java%')
GROUP BY first_name, last_name, course_no, description
HAVING COUNT(*) =
(SELECT MAX(course_count)
FROM (SELECT DISTINCT first_name, last_name, COUNT(*) As course_count
FROM(
SELECT i.first_name, i.last_name, c.course_no, c.description
FROM instructor i INNER JOIN section s
ON i.instructor_id = s.instructor_id
JOIN course c ON c.course_no = s.course_no
WHERE c.description LIKE '%Java%')
GROUP BY first_name, last_name));
Возможно, лучше использовать ваш MAX() sub, чтобы получить идентификатор инструктора, а затем использовать простое предложение WHERE для фильтрации на всех курсах инструктора. – Edgar
Зачем вам нужны «course_no» и «description»? Потому что, если, например, инструктор по имени Джон Доу научит Intro Java и промежуточной Java, которую вы хотите отобразить? Или вы хотите просто посчитать преподавателя, который преподавал Java, будь то Intro или нет? Или вы хотите его отдельно? – Edper
Я бы хотел их показать. Имя должно быть повторено, а затем список каждого course_no и описание. – K455306