Oracle 10g SQL-Klausel Kompilierungsfehler
Frage
Der Kompilierungsfehler sagt "mm" und "cc" ist ungültig Kennung!
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
where m.c = mm.cc;
Lösung
Der Fehler ist, weil mm
der Name der Subquery Factoring (AKA CTE) Instanz ist, aber wie Sie sehen können:
SELECT m.instructor
FROM m
WHERE m.c = mm.cc;
Sie haben nicht erklärt mm
als zum m
Instanz JOIN. Verwendung:
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
Andere Tipps
Ich nehme an, Sie versuchen, die Lehrer mit den Klassen zu erhalten.
Könnten Sie nicht verwenden
Select m.instructor FROM (select instructor, count(*) as c from class group by instructor order by 2 desc) m where rownum = 1
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow