web-dev-qa-db-fra.com

développeur Oracle SQL: 00904. 00000 - "% s: identifiant non valide". Où est ma faute?

J'essaie de trouver ma faute. Je reçois ce message d'erreur:

SQL-Fehler: ORA-00904: "S1". "PARTNO": ungültiger Bezeichner 00904. 00000 - "% s: identifiant non valide"

J'ai vérifié ma base de données et toutes les tables existent.

Voici mon code 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

Parce que vous avez un alias dans la sélection interne (s1) partno as "Partno" vous devez vous y référer comme sensible à la casse dans la requête externe:

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

Si vous mettez des guillemets doubles autour d'un nom de colonne, cela le rendra sensible à la casse. Je pense donc que cette ligne:

s.partno as "Partno" 

crée un s1 sensible à la casse. "Partno" mais la clause where recherche s1.partno. Essayez de supprimer les guillemets doubles de vos alias de colonne.

2
Glenn