Komisch, Oracle SQL "Ungültiger Bezeichner" error

Kann jemand mir helfen herauszufinden, warum bekomme ich eine Fehlermeldung auf cms.CRIME_ID:

ungültige Bezeichner

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;

Weiß ich für eine absolute Tatsache, dass die Spalte existiert und ich kann auf jede andere Spalte in dieser Tabelle abgesehen.

Nur, was andere über diese Spalte, es ist der Primärschlüssel für diese Tabelle.

EDIT: Hier ist der Fehler und das Skript zur Erstellung der Tabelle.

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:

 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);

EDIT2: Auch, vielleicht sollte ich erwähnen, dass, wenn Sie nicht mit joins und nur reguläre select-Anweisungen kann ich den Zugriff auf die Spalte einfach in Ordnung, wie im folgenden code-Beispiel:

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;
Bitte posten Sie die details der beteiligten Tabellen
Hat Ihr Benutzer die Berechtigung haben, auf die Verbrechen, die Tabelle?
Was ist die definition für die crime_charges Tabelle?
F,M,O,U = Verbrechen, Vergehen, Verordnung (?), ???
Haben Sie versucht, mit dem voll qualifizierten Namen (zB: crimes.crime_id statt cms.crime_id)?

InformationsquelleAutor JohnQPublic | 2011-09-14

Schreibe einen Kommentar