una tablas tabla sentencia requieren renombrar recreación realizado que puedo permite para modificar los impedir guardar eliminar columna cambios agregar sql database

tablas - renombrar columna sql



sql 2005-La columna fue especificada varias veces (5)

El problema, como se mencionó, es que está seleccionando PEID de dos tablas, la solución es especificar qué PEID desea, por ejemplo

SELECT tb.* FROM ( SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID ) AS tb;

Aparte de eso, como lo señala inteligentemente Chris Lively en un comentario, el SELECT externo es totalmente superfluo. Lo siguiente es totalmente equivalente al primero.

SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID

o incluso

SELECT * FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2 ON tb1.PROD_PERM = tb2.PEID INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID

pero por favor, evite usar SELECT * siempre que sea posible . Puede funcionar mientras realiza consultas interactivas para guardar la escritura, pero en el código de producción nunca lo use.

Recibo el siguiente error al intentar ejecutar esta consulta en SQL 2005:

SELECT tb.* FROM ( SELECT * FROM vCodesWithPEs INNER JOIN vDeriveAvailabilityFromPE ON vCodesWithPEs.PROD_PERM = vDeriveAvailabilityFromPE.PEID INNER JOIN PE_PDP ON vCodesWithPEs.PROD_PERM = PE_PDP.PEID ) AS tb; Error: The column ''PEID'' was specified multiple times for ''tb''.

Soy nuevo en sql. Gracias de antemano por su consejo.

Eneo.


En lugar de usar * para identificar la recopilación de todos los campos, vuelva a escribir su consulta para nombrar explícitamente las columnas que desea. De esa manera no habrá confusión.


Está uniendo tres tablas y mirando todas las columnas en la salida (*).

Parece que las tablas tienen un nombre de columna común PEID, que tendrá que usar como alias como otra cosa.

Solución: no utilice * en la subconsulta, pero seleccione explícitamente cada columna que desee ver, y asigne un alias al nombre de cualquier columna que aparezca más de una vez.


Parece que tiene la columna PEID en las dos tablas: vDeriveA Autentificación de EP y PE_PDP . La instrucción SELECT intenta seleccionar ambos y da un error sobre el nombre de columna duplicado.


solo da un nuevo nombre de alias para la columna que se repite, funcionó para mí .....