Tengo dos tablas en una base de datos SQLite, INVITEM y SHOPITEM. Su atributo compartido es ItemId y quiero realizar una UNIÓN INTERNA. Aquí está la consulta:"nombre de columna ambigua" en SQLite INNER JOIN
SELECT INVITEM.CharId AS CharId,
INVITEM.ItemId AS ItemId
FROM (INVITEM as INVITEM
INNER JOIN SHOPITEM AS SHOPITEM
ON SHOPITEM.ItemId = INVITEM.ItemId)
WHERE ItemId = 3;
SQLite no le gusta:
SQL error: ambiguous column name: ItemId
El error desaparece si escribo WHERE INVITEM.ItemId = 3
, pero dado que la condición WHERE es más o menos especificado por el usuario, prefiero hacer funciona sin tener que especificar la tabla. NATURAL JOIN parece resolver el problema, pero no estoy seguro si la solución es lo suficientemente general (es decir, podría usarlo en este caso, pero no estoy seguro si puedo usarlo en todos los casos)
Cualquier SQL alternativo sintaxis que solucionaría el problema?
Terminé haciendo algo como esto. Nunca le permito al usuario escribir SQL directamente, pero las cláusulas WHERE se construyen usando plantillas de expresión. Calificar los nombres de las columnas cuando sea necesario fue suficiente. – ggambett