2015-06-09 3 views
0

Я пытаюсь построить заявление, которое будет показывать 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)); 
+1

Возможно, лучше использовать ваш MAX() sub, чтобы получить идентификатор инструктора, а затем использовать простое предложение WHERE для фильтрации на всех курсах инструктора. – Edgar

+0

Зачем вам нужны «course_no» и «description»? Потому что, если, например, инструктор по имени Джон Доу научит Intro Java и промежуточной Java, которую вы хотите отобразить? Или вы хотите просто посчитать преподавателя, который преподавал Java, будь то Intro или нет? Или вы хотите его отдельно? – Edper

+0

Я бы хотел их показать. Имя должно быть повторено, а затем список каждого course_no и описание. – K455306

ответ

1

У вас есть несоответствие между вашим внешним запросом и подзапросом в вашем предложении HAVING: первый имеет GROUP BY first_name, last_name, course_no, description, последние только GROUP BY first_name, last_name. Естественно, вы обычно не найдете 4-х кортежей из предыдущих столбцов с таким количеством строк, как самая общая пара последних столбцов.

+0

Прошу прощения, я довольно новичок в этом и не совсем понимаю ваш ответ. – K455306

+0

@kabel: Какую часть этого вы не понимаете? (Кстати, как вы построили свой запрос? Начали ли вы с некоторых существующих запросов и попытаетесь настроить их на то, что вам нужно?) – ruakh

+0

Я смущен тем, что вызывает различие в группе по полям. Я построил заявление, которое я сначала начал с первоначального заявления, в котором были представлены все курсы и инструкторы, которые преподавали курс, содержащий java, и отправились оттуда. – K455306

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