web-dev-qa-db-ja.com

oracle sql developer:00904. 00000-"%s:invalid identifier"。私のせいはどこですか

私は私のせいを見つけようとしています。次のエラーメッセージが表示されます。

SQL-Fehler:ORA-00904: "S1"。 "PARTNO":ungültigerBezeichner 00904. 00000-"%s:invalid identifier"

データベースを確認しましたが、すべてのテーブルが存在します。

これが私のSQLコードです:

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
8
user3617496

内部選択(s1)partnoのエイリアスとして"Partno"を使用しているため、外部クエリでは大文字と小文字を区別して参照する必要があります。

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"
4
A.B.Cade

列名を二重引用符で囲むと、大文字と小文字が区別されます。だから私はこの行を考えます:

s.partno as "Partno" 

は大文字と小文字を区別するs1。 "Partno"を作成していますが、where句はs1.partnoを探しています。列のエイリアスから二重引用符を削除してみてください。

2
Glenn