ORA-00918: colonne d'une manière ambiguë, définis: comment trouver la colonne
je me fais de la classique erreur "ORA-00918: colonne de manière ambiguë définie",
habituellement, je sais comment le résoudre, mais mon problème maintenant est que je suis en train de travailler avec un 700 ligne de requête.
Est-il possible d'identifier la colonne?
Thx
Daniele
Tu veux dire 700 colonnes de la requête?
nono 700 ligne de code SQL (environ 100 colonne)
Ce client utilisez-vous? Plus vous dirigera vers la bonne ligne (ou assez proche).
Oracle SQL Developer, mais il n'y a aucun signe de la ligne avec l'erreur
700 ligne de requête est habituellement un signe que quelque chose est très mal dans la logique.
nono 700 ligne de code SQL (environ 100 colonne)
Ce client utilisez-vous? Plus vous dirigera vers la bonne ligne (ou assez proche).
Oracle SQL Developer, mais il n'y a aucun signe de la ligne avec l'erreur
700 ligne de requête est habituellement un signe que quelque chose est très mal dans la logique.
OriginalL'auteur Daniele | 2012-09-17
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé de faire une recherche binaire?
par exemple
Si votre requête originale ressemble
Select col1
,col2
,col3
,col4
from MyTable
vous pouvez commencer avec les commentaires de la 2e moitié
Select col1
,col2
/*,col3
,col4 */
from MyTable
Si l'erreur persiste, exécutez à nouveau la requête de commenter certaines de colonne de l'autre moitié:
Select col1
/*col2 */
col3
col4
from MyTable
Si vous obtenez une erreur alors votre problème est avec col1, sinon vous avez besoin de changer col2
OriginalL'auteur Ricardo Arnold
L'ambiguïté de la colonne message d'erreur indique que vous avez joint les deux (ou plus) des colonnes dans votre requête, qui partagent le même nom de colonne.
La bonne façon de résoudre ce problème est de donner à chaque table dans la requête un alias, puis préfixe toutes les références de colonne avec les alias. Je suis d'accord que ne sera pas drôle pour une telle requête, mais je crains que vous allez avoir à payer le prix de votre prédécesseur laxness.
OriginalL'auteur APC
Dans Oracle, vous pouvez utiliser all_tab_cols pour interroger les colonnes les noms de vos tables. La requête suivante renvoie la commune de noms de colonne entre TABLE1 et TABLE2. Ensuite, vous avez juste besoin de faire précéder ces colonnes au lieu de 100 références de colonne.
OriginalL'auteur James Lawruk
Dans un souci de postérité:
J'ai eu ce problème lorsque j'ai sélectionné les colonnes de la table TABLE1.DES et TABLE2.DES dans une requête sans crénelage le résultat. Quand j'ai couru seul mon éditeur SQL converties en DES et DES_1, pas de plainte.
Cependant, quand j'ai tourné la même requête dans une sous-requête
il a jeté le même ORA-00918 message d'erreur que vous avez décrit. La modification de la SÉLECTIONNER dans mon sous-requête pour
SELECT TABLE1.DES AS T1_DES, TABLE2.DES AS T2_DES ...
résolu le problème.
OriginalL'auteur MrHardwick
vous pouvez vérifier commune de colonnes à l'aide :
OriginalL'auteur nikhil sugandh