2014-05-08 5 views
7

Ich versuche meine Schuld zu finden. Ich erhalte diese Fehlermeldung:Oracle SQL-Entwickler: 00904. 00000 - "% s: ungültige Kennung". Wo ist meine Schuld?

SQL-Fehler: ORA-00904: "S1" "PARTNO": ungültiger Bezeichner 00904. 00000 - "% s: ungültige Kennung".

Ich habe meine Datenbank überprüft und alle Tabellen existieren.

Hier ist meine SQL-Code:

select s1.* 
, p.city as "Produktionsort" 
, p.partname 
from (select count(s.partno) as "Anzahl_Produktarten" 
     , s.partno as "Partno" 
     from company.supp_part_job s 
     group by s.partno) s1 
, company.part p 
where s1.partno IN (select p1.partno from company.part p1 where p1.city != 'London') 
    and p.partno = s1.partno 
group by s1.partno 
+0

Ist 'partno' die richtige Schreibweise? Könnte ein Tippfehler sein. –

+0

ja, ist es. Ich habe 'partno' in anderen SQL-Abfragen verwendet und es gibt keine Probleme. – user3617496

Antwort

2

Wenn Sie doppelte Anführungszeichen um einen Spaltennamen setzen, wird es Groß- und Kleinschreibung machen. So würde ich denken, diese Zeile:.

s.partno as "Partno" 

ist Groß- und Kleinschreibung s1 zu schaffen „Artikelnr“, aber die where Klausel sucht s1.partno. Versuchen Sie, die doppelten Anführungszeichen aus Ihren Spaltenaliasen zu entfernen.

+1

Ich bekomme den gleichen Fehler. Hast du noch andere Ideen? – user3617496

+0

@ user3617496 - [Die Abfragen aus beiden Antworten sind gültig] (http://sqlfiddle.com/#!4/7b5c9/1), wenn die zusätzliche Gruppe "by" entfernt wurde. Wenn Sie diese Änderung vorgenommen haben, können Sie nicht genau denselben Fehler erhalten. –

4

Weil Sie in der Innen wählen aliased (s1) partno als "Partno" Sie es als Groß- und Kleinschreibung in der äußeren Abfrage verweisen:

select s1.* 
, p.city as "Produktionsort" 
, p.partname 
from (select count(s.partno) as "Anzahl_Produktarten" 
     , s.partno as "Partno" 
     from company.supp_part_job s 
     group by s.partno) s1 
, company.part p 
where s1."Partno" IN (select p1.partno from company.part p1 where p1.city != 'London') 
    and p.partno = s1."Partno" 
group by s1."Partno" 
+0

Ich bekomme den gleichen Fehler. Hast du noch andere Ideen? – user3617496

+0

@ user3617496 - Haben Sie alle drei Referenzen geändert? –

+0

ja, ich habe alle drei Referenzen geändert – user3617496