奇怪的Oracle SQL"无效标识符"错误

Joh*_*lic 6 sql oracle ora-00904

任何人都可以帮我弄清楚为什么我会收到错误cms.CRIME_ID:

不合法的识别符

select c.criminal_id, c.first, c.last, cms.CRIME_ID, cc.crime_code, cc.fine_amount
from criminals c join crimes cms on c.criminal_id = cms.criminal_id
join crime_charges cc using (crime_id)
order by c.first, c.last;
Run Code Online (Sandbox Code Playgroud)

我知道列存在的绝对事实,我可以引用该表中的每个其他列,除此之外.

该列唯一不同的是它是该表的主键.

编辑:这是完整的错误和表创建脚本.

Error starting at line 1 in command:
select c.criminal_id, c.first, c.last, cms.CRIME_ID, cc.crime_code, cc.fine_amount
from criminals c join crimes cms on c.criminal_id = cms.criminal_id
join crime_charges cc using (crime_id)
order by c.first, c.last
Error at Command Line:1 Column:39
Error report:
SQL Error: ORA-00904: "CMS"."CRIME_ID": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)
 CREATE TABLE crimes
      (crime_id NUMBER(9),
       criminal_id NUMBER(6),
       classification CHAR(1),
       date_charged DATE,
       status CHAR(2),
       hearing_date DATE,
       appeal_cut_date DATE);

ALTER TABLE crimes
  MODIFY (classification DEFAULT 'U');
ALTER TABLE crimes
  ADD (date_recorded DATE DEFAULT SYSDATE);
ALTER TABLE crimes
  MODIFY (criminal_id NOT NULL);
ALTER TABLE crimes
  ADD CONSTRAINT crimes_id_pk PRIMARY KEY (crime_id);
ALTER TABLE crimes
  ADD CONSTRAINT crimes_class_ck CHECK (classification IN('F','M','O','U'));
ALTER TABLE crimes
  ADD CONSTRAINT crimes_status_ck CHECK (status IN('CL','CA','IA'));
ALTER TABLE crimes
  ADD CONSTRAINT crimes_criminalid_fk FOREIGN KEY (criminal_id)
             REFERENCES criminals(criminal_id);
ALTER TABLE crimes
  MODIFY (criminal_id NOT NULL);
Run Code Online (Sandbox Code Playgroud)

编辑2:另外,我应该提一下,当不使用连接和常规选择语句时,我可以正常访问该列,如下面的代码示例所示:

select c.criminal_id, c.first, c.last, cms.crime_id, cc.crime_code, cc.fine_amount
from criminals c, crime_charges cc, crimes cms
where c.criminal_id = cms.criminal_id
and cms.crime_id = cc.crime_id
order by c.first, c.last;
Run Code Online (Sandbox Code Playgroud)

小智 0

您尝试过以下操作吗?

Join On (Left Id) = (Right Id)
Run Code Online (Sandbox Code Playgroud)

代替关键字Using