SQL - 无效的标识符,但在哪里?

Mat*_*idd 2 sql database oracle

我是SQL的初学者,我一直在尝试锻炼几个小时,现在问题是:

SELECT COUNT (DISTINCT c.BAND_ID)Number_of_bands, COUNT(DISTINCT c.COMP_ID)"Total_Competitions",g.NAME GENRE_TYPE
FROM ENTERED_COMPS ec,COMPETITIONS c,GENRE g
WHERE c.COMP_ID = ec.COMP_ID
AND g.GENRE_ID = c.GENRE_ID
AND c.BAND_ID = b.BAND_ID
GROUP BY GENRE_TYPE
ORDER BY GENRE_TYPE ASC;

Oracle just comes up with the error 
ORA-00904: "GENRE_TYPE": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 6 Column: 9
Run Code Online (Sandbox Code Playgroud)

这让我觉得GENRE.NAME列一定存在问题....名称不正确或拼写错误.然而事实并非如此......

我试图通过按字母顺序输出它们来分析比较流行的类型,并显示每种类型的比赛有多少以及有多少乐队进入每种类型的比赛.

为了使这更简单,这里是我的ERD的链接 - http://www.missingstudios.com/matt/ERD%20Logical.pdf

非常感谢支持!

jue*_*n d 5

尝试在你的group byorder by子句中留下别名

SELECT COUNT (DISTINCT c.BAND_ID) Number_of_bands, 
       COUNT(DISTINCT c.COMP_ID) Total_Competitions, 
       g.NAME GENRE_TYPE
FROM ENTERED_COMPS ec,COMPETITIONS c,GENRE g
WHERE c.COMP_ID = ec.COMP_ID
AND g.GENRE_ID = c.GENRE_ID
AND c.BAND_ID = b.BAND_ID
GROUP BY g.NAME
ORDER BY g.NAME ASC;
Run Code Online (Sandbox Code Playgroud)

  • 我们中的一些人学会了在支持ANSI连接语法之前编写SQL.Oracle 8i就在不久之前. (2认同)