Oracle 10g SQL с ошибкой компиляции пункта - PullRequest
1 голос
/ 25 октября 2010

Ошибка компиляции говорит, что "mm" и "cc" - неверный идентификатор!

Ответы [ 2 ]

5 голосов
/ 25 октября 2010

Ошибка в том, что mm - это имя экземпляра Факторинга подзапроса (AKA CTE), но, как вы можете видеть:

SELECT m.instructor 
 FROM m 
WHERE m.c = mm.cc;

Вы не объявили mm как ПРИСОЕДИНЕНИЕ к экземпляру m. Использование:

WITH m AS (
    SELECT instructor, 
           COUNT(*) as c 
      FROM CLASS
  GROUP BY instructor),
     mm AS ( 
    SELECT MAX(m.c) as cc 
      FROM m)
SELECT m.instructor 
  FROM m
  JOIN mm ON mm.cc = m.c
0 голосов
/ 25 октября 2010

Полагаю, вы пытаетесь получить инструктора с большинством классов.

Не могли бы вы не использовать

Select m.instructor FROM (select instructor, count(*) as c from class group by instructor order by 2 desc) m where rownum = 1
...