Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-00918:coluna definida de forma ambígua em SELECT *


A projeção de uma consulta pode ter apenas uma instância de um determinado nome. Como sua cláusula WHERE mostra, você tem várias tabelas com uma coluna chamada ID. Porque você está selecionando * sua projeção terá várias colunas chamadas ID. Ou teria sido se não fosse o compilador lançando ORA-00918.

A solução é bastante simples:você terá que expandir a projeção para selecionar explicitamente as colunas nomeadas. Em seguida, você pode deixar de fora as colunas duplicadas, mantendo apenas (digamos) COACHES.ID ou usar aliases de coluna:coaches.id as COACHES_ID .

Talvez isso lhe pareça um monte de digitação, mas é a única maneira. Se for algum conforto, SELECT * é considerado uma prática ruim no código de produção:colunas nomeadas explicitamente são muito mais seguras.