Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00918:colonna definita in modo ambiguo in SELECT *

La proiezione di una query può avere solo un'istanza di un determinato nome. Come mostra la tua clausola WHERE, hai diverse tabelle con una colonna chiamata ID. Perché stai selezionando * la tua proiezione avrà diverse colonne chiamate ID. O lo sarebbe se non fosse stato per il compilatore che lancia ORA-00918.

La soluzione è abbastanza semplice:dovrai espandere la proiezione per selezionare esplicitamente le colonne con nome. Quindi puoi omettere le colonne duplicate, conservando solo (ad esempio) COACHES.ID o utilizzare alias di colonna:coaches.id as COACHES_ID .

Forse ti sembra un sacco di digitazione, ma è l'unico modo. Se può essere di conforto, SELECT * è considerata una cattiva pratica nel codice di produzione:le colonne con nome esplicito sono molto più sicure.