ORA-00918: column ambiguously defined (columna definida de forma ambigua)
Oracle¿Qué significa?
Existe una columna con el mismo nombre en más de una tabla de la consulta y, como se usa sin prefijo de tabla/alias, Oracle no puede determinar a qué tabla pertenece.
¿Por qué ocurre?
Ambas tablas combinadas tienen una columna con el mismo nombre (p. ej., ID en ambas); la columna se usa sin calificar (sin prefijo) en SELECT, WHERE u ORDER BY.
Cómo solucionarlo
Califique cada columna ambigua con el nombre o alias de la tabla: SELECT a.id, b.id FROM tableA a JOIN tableB b ON a.id = b.a_id; Asigne alias cortos a las tablas y anteponga el prefijo a todas las columnas para mejorar la legibilidad y la claridad.
Más entradas de este motor
- ORA-02291integrity constraint violated - parent key not found (violación de integridad: clave padre no encontrada)
- ORA-02292integrity constraint violated - child record found (violación de integridad: se encontró un registro hijo)
- ORA-00979not a GROUP BY expression (no es una expresión GROUP BY)
- ORA-06550línea/columna PLS-... error de compilación PL/SQL
- ORA-04068existing state of packages has been discarded (se descartó el estado existente de los paquetes)
- ORA-01427single-row subquery returns more than one row (una subconsulta de una sola fila devuelve más de una fila)
- ORA-12899value too large for column (valor demasiado grande para la columna)