Maison >base de données >tutoriel mysql >Pourquoi est-ce que je reçois l'erreur ORA-00904 : Identifiant non valide dans ma requête de jointure Oracle SQL ?

Pourquoi est-ce que je reçois l'erreur ORA-00904 : Identifiant non valide dans ma requête de jointure Oracle SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-17 08:36:11236parcourir

Why am I getting the ORA-00904: Invalid Identifier error in my Oracle SQL join query?

Dépannage ORA-00904 : identifiant non valide dans les jointures Oracle SQL

Cet article traite de l'erreur courante « ORA-00904 : identifiant invalide » rencontrée lors de l'exécution de jointures dans des requêtes Oracle SQL. Examinons un scénario typique et sa solution.

Le problème :

Considérez cette requête de jointure interne :

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>

Cela pourrait produire l'erreur :

<code>ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier</code>

La cause profonde :

Le problème provient souvent d'une casse incohérente et de l'utilisation de guillemets doubles dans les noms de tables ou de colonnes. Le comportement d'Oracle en matière de sensibilité à la casse dépend de la façon dont les objets de base de données sont définis.

  • Insensible à la casse (sans guillemets doubles) : Si vous créez un tableau sans guillemets doubles autour du nom, Oracle ignore généralement la casse du nom de l'objet et de ses colonnes.

  • Sensible à la casse (avec guillemets doubles) : Si vous créez un tableau avec guillemets doubles autour du nom (par exemple, "MyTable"), Oracle devient sensible à la casse. Vous devez utiliser exactement la même casse (y compris les guillemets) lorsque vous référencez la table et ses colonnes dans vos requêtes.

La solution :

Pour corriger l'erreur « ORA-00904 », assurez-vous de la cohérence des noms de vos tables et colonnes :

  1. Vérifiez la création de tables : Passez en revue les scripts SQL utilisés pour créer vos tables (PS_TBL_EMPLOYEE_DETAILS et PS_TBL_DEPARTMENT_DETAILS). Notez si des guillemets doubles ont été utilisés.

  2. Ajuster la requête : Si les tables ont été créées sans guillemets doubles, la requête devrait fonctionner correctement telle quelle (ou avec des ajustements mineurs de la casse). S'ils ont été créés avec guillemets doubles, reproduisez la casse et les guillemets exacts dans vos déclarations SELECT et JOIN.

  3. Requête corrigée (sans guillemets doubles dans la création de table) :

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>

En respectant ces directives et en examinant attentivement les définitions de vos tables, vous pouvez résoudre efficacement l'erreur « ORA-00904 : identifiant non valide » dans vos requêtes de jointure Oracle SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn