Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00918 :colonne définie de manière ambiguë dans SELECT *

La projection d'une requête ne peut avoir qu'une seule instance d'un nom donné. Comme le montre votre clause WHERE, vous avez plusieurs tables avec une colonne appelée ID. Parce que vous sélectionnez * votre projection aura plusieurs colonnes appelées ID. Ou il l'aurait été si le compilateur n'avait pas lancé ORA-00918.

La solution est assez simple :vous devrez étendre la projection pour sélectionner explicitement des colonnes nommées. Ensuite, vous pouvez soit omettre les colonnes en double, en ne conservant que (par exemple) COACHES.ID, soit utiliser des alias de colonne :coaches.id as COACHES_ID .

Cela vous semble peut-être beaucoup de frappe, mais c'est le seul moyen. Si cela vous convient, SELECT * est considéré comme une mauvaise pratique dans le code de production :les colonnes explicitement nommées sont beaucoup plus sûres.