嗨,我有以下代码
SELECT entertainer_id,
entertainer_groupname
FROM casestudy_entertainer
INNER JOIN casestudy_availability ON
casestudy_entertainer.entertainer_id
= CASESTUDY_AVAILABILITY.AVAILABILITY_ENTERTAINERID
INNER JOIN casestudy_calendardates ON
CASESTUDY_AVAILABILITY.AVAILIBILITY_CALENDARDATEID
= casestudy_calendardates.calendar_Id
WHERE entertainer_type = '&Entertainer_TYPE'
AND casestudy_calendardates.calendar_date = '&Event_date'
当我运行它时,我似乎无法弄清楚它不喜欢什么。它给了我以下错误
ORA-00904:“CASESTUDY_AVAILIBILITY”。“AVAILIBILITY_CALENDARDATEID”:无效标识符00904. 00000 - “%s:无效标识符”*原因: *动作:行错误:7列:4
我确实拥有所有正确行的表。唯一的问题是我还没有数据,这可能是问题吗?
您应该尝试使用小写表格/列标识符(例如在from
/ inner join
子句中):
SELECT entertainer_id,
entertainer_groupname
FROM casestudy_entertainer
INNER JOIN casestudy_availability ON casestudy_entertainer.entertainer_id = casestudy_availability.availability_entertainerid
INNER JOIN casestudy_calendardates ON casestudy_availability.availibility_calendardateid = casestudy_calendardates.calendar_id
WHERE entertainer_type = '&Entertainer_TYPE'
AND casestudy_calendardates.calendar_date = '&Event_date'
没有数据不是问题,你不会简单地获得null结果。 ORA-00904表示您使用的列不存在或不符合Oracle规范。
请检查是否正确命名。使用较短的名称或至少使用表别名可能会更好,以使代码更具可读性。
在不知道您的表结构的情况下,我无法告诉您错误的位置。做一个describe table_name;
它还有助于拥有oracle版本号SELECT * FROM V$VERSION
或SELECT version FROM V$INSTANCE
以及您正在使用的客户端软件
此错误是由数据库表的其中一列中的特殊字符引起的。 DBA将能够为您提供帮助。
在离开加入时,表中有相同的表名。
更改一个表名,它将起作用。