Update de una misma tabla (20090203)

03/02/2009 - 15:52 por Mauricio | Informe spam
Hola a todos,
producto de una conversión de datos tengo una tabla de productos que
tiene 2 registros "prácticamente idénticos". Una de las diferencias es
el código, a uno de ellos se le agrega 1.000.000. Ahora tengo que mover
ciertos campos del registro con código alto al del número bajo, por lo
que hice el siguiente UPDATE.

UPDATE dbo.MCS_PRODUCTS SET
PRO.PRO_PROGRP_ID = A.PROGRP_ID,
PRO.PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
PRO.PRO_STK2GRAMS = A.PRO_STK2GRAMS,
PRO.PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
PRO.PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
PRO.PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
PRO.PRO_FDS_ID = A.PRO_FDS_ID,
PRO.PRO_SUP_ID = A.PRO_SUP_ID,
PRO.PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
PRO.PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
PRO.PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
PRO.PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
FROM MCS_PRODUCTS PRO
INNER JOIN MCS_PRODUCTS A
ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
WHERE PRO.PRO_CODE = 14939

Sin embargo, al querer ejecutarlo, me da error por ser ambiguo el
nombre de la tabla, MCS_PRODUCTS.
Alguna idea de cómo puedo hacerlo?
Desde ya, muchas gracias.

Mauricio
Copenhague, Dinamarca

Preguntas similare

Leer las respuestas

#6 Carlos Sacristan
03/02/2009 - 16:31 | Informe spam
Tienes razón.

Prueba entonces usando una CTE:

WITH a AS (SELECT * FROM MCS_PRODUCTS)
UPDATE dbo.MCS_PRODUCTS SET
PRO_PROGRP_ID = A.PROGRP_ID,
PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
PRO_STK2GRAMS = A.PRO_STK2GRAMS,
PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
PRO_FDS_ID = A.PRO_FDS_ID,
PRO_SUP_ID = A.PRO_SUP_ID,
PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
FROM MCS_PRODUCTS PRO
INNER JOIN A
ON (PRO_CODE + 1000000 = A.PRO_CODE)
WHERE PRO.PRO_CODE = 14939

Un saludo
-
www.navento.com
Servicios de Localización GPS


"Mauricio" wrote:

Hola Carlos,
me da el mismo mensaje de MCS_PRODUCTS ambiguo. :(

Le 03/02/2009, Carlos Sacristan a supposé :
> UPDATE dbo.MCS_PRODUCTS SET
> PRO_PROGRP_ID = A.PROGRP_ID,
> PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
> PRO_STK2GRAMS = A.PRO_STK2GRAMS,
> PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
> PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
> PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
> PRO_FDS_ID = A.PRO_FDS_ID,
> PRO_SUP_ID = A.PRO_SUP_ID,
> PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
> PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
> PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
> PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
> FROM MCS_PRODUCTS PRO
> INNER JOIN MCS_PRODUCTS A
> ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
> WHERE PRO.PRO_CODE = 14939
>
>
> Un saludo
> -
> www.navento.com
> Servicios de Localización GPS
>
>
> "Mauricio" wrote:
>
>> Hola a todos,
>> producto de una conversión de datos tengo una tabla de productos que
>> tiene 2 registros "prácticamente idénticos". Una de las diferencias es
>> el código, a uno de ellos se le agrega 1.000.000. Ahora tengo que mover
>> ciertos campos del registro con código alto al del número bajo, por lo
>> que hice el siguiente UPDATE.
>>
>> UPDATE dbo.MCS_PRODUCTS SET
>> PRO.PRO_PROGRP_ID = A.PROGRP_ID,
>> PRO.PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
>> PRO.PRO_STK2GRAMS = A.PRO_STK2GRAMS,
>> PRO.PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
>> PRO.PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
>> PRO.PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
>> PRO.PRO_FDS_ID = A.PRO_FDS_ID,
>> PRO.PRO_SUP_ID = A.PRO_SUP_ID,
>> PRO.PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
>> PRO.PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
>> PRO.PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
>> PRO.PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
>> FROM MCS_PRODUCTS PRO
>> INNER JOIN MCS_PRODUCTS A
>> ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
>> WHERE PRO.PRO_CODE = 14939
>>
>> Sin embargo, al querer ejecutarlo, me da error por ser ambiguo el
>> nombre de la tabla, MCS_PRODUCTS.
>> Alguna idea de cómo puedo hacerlo?
>> Desde ya, muchas gracias.
>>
>> Mauricio
>> Copenhague, Dinamarca
>>
>>
>>

Mauricio
Copenhague, Dinamarca



Respuesta Responder a este mensaje
#7 Maxi
03/02/2009 - 16:57 | Informe spam
Mauricio, debe usted no solo especificar el nombre del campo sino tambien en
de la tabla, por ejemplo tabla.campo, en lugar de campo.
Haga eso y vera que todo funciona bien :)


Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Total Consulting



"Mauricio" escribió en el mensaje de
noticias:
Hola a todos,
producto de una conversión de datos tengo una tabla de productos que
tiene 2 registros "prácticamente idénticos". Una de las diferencias es el
código, a uno de ellos se le agrega 1.000.000. Ahora tengo que mover
ciertos campos del registro con código alto al del número bajo, por lo que
hice el siguiente UPDATE.

UPDATE dbo.MCS_PRODUCTS SET
PRO.PRO_PROGRP_ID = A.PROGRP_ID,
PRO.PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
PRO.PRO_STK2GRAMS = A.PRO_STK2GRAMS,
PRO.PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
PRO.PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
PRO.PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
PRO.PRO_FDS_ID = A.PRO_FDS_ID,
PRO.PRO_SUP_ID = A.PRO_SUP_ID,
PRO.PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
PRO.PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
PRO.PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
PRO.PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
FROM MCS_PRODUCTS PRO
INNER JOIN MCS_PRODUCTS A
ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
WHERE PRO.PRO_CODE = 14939

Sin embargo, al querer ejecutarlo, me da error por ser ambiguo el nombre
de la tabla, MCS_PRODUCTS.
Alguna idea de cómo puedo hacerlo?
Desde ya, muchas gracias.

Mauricio
Copenhague, Dinamarca


Respuesta Responder a este mensaje
#8 Alejandro Mesa
03/02/2009 - 17:54 | Informe spam
Mauricio,

Con el permiso de Maxi. Si estas usando alias, entonces debes especificar el
alias que vas a actualizar.

UPDATE
PRO
SET
PRO_PROGRP_ID = A.PROGRP_ID,
PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
PRO_STK2GRAMS = A.PRO_STK2GRAMS,
PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
PRO_FDS_ID = A.PRO_FDS_ID,
PRO_SUP_ID = A.PRO_SUP_ID,
PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
FROM
MCS_PRODUCTS PRO
INNER JOIN
MCS_PRODUCTS A
ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
WHERE
PRO.PRO_CODE = 14939;
GO


AMB


"Mauricio" wrote:

Hola Maxi,
probé así:
UPDATE MCS_PRODUCTS SET
MCS_PRODUCTS.PRO_PROGRP_ID = A.PROGRP_ID,
MCS_PRODUCTS.PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
MCS_PRODUCTS.PRO_STK2GRAMS = A.PRO_STK2GRAMS,
MCS_PRODUCTS.PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
MCS_PRODUCTS.PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
MCS_PRODUCTS.PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
MCS_PRODUCTS.PRO_FDS_ID = A.PRO_FDS_ID,
MCS_PRODUCTS.PRO_SUP_ID = A.PRO_SUP_ID,
MCS_PRODUCTS.PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
MCS_PRODUCTS.PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
MCS_PRODUCTS.PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
MCS_PRODUCTS.PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
FROM MCS_PRODUCTS PRO
INNER JOIN MCS_PRODUCTS A
ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
WHERE PRO.PRO_CODE = 14939

Y me sigue dando el error de nombre ambiguo para MCS_PRODUCTS. Y no
logro darme cuenta dónde está mal. :(

Maxi a émis l'idée suivante :
> Mauricio, debe usted no solo especificar el nombre del campo sino tambien en
> de la tabla, por ejemplo tabla.campo, en lugar de campo.
> Haga eso y vera que todo funciona bien :)
>
>
> Maxi Accotto
> Microsoft MVP en SQL Server
> Consultor en SQL Total Consulting
>
>
>
> "Mauricio" escribió en el mensaje de
> noticias:
>> Hola a todos,
>> producto de una conversión de datos tengo una tabla de productos que
>> tiene 2 registros "prácticamente idénticos". Una de las diferencias es el
>> código, a uno de ellos se le agrega 1.000.000. Ahora tengo que mover
>> ciertos campos del registro con código alto al del número bajo, por lo que
>> hice el siguiente UPDATE.
>>
>> UPDATE dbo.MCS_PRODUCTS SET
>> PRO.PRO_PROGRP_ID = A.PROGRP_ID,
>> PRO.PRO_LITER22GRAMS = A.PRO_LITERS2GRAMS,
>> PRO.PRO_STK2GRAMS = A.PRO_STK2GRAMS,
>> PRO.PRO_ALTERNATIVEUNIT = A.PRO_ALTERNATIVEUNIT,
>> PRO.PRO_ALTERNATIVE2GRAMS = A.PRO_ALTERNATIVE2GRAMS,
>> PRO.PRO_DEFAULTUNIT = A.PRO_DEFAULTUNIT,
>> PRO.PRO_FDS_ID = A.PRO_FDS_ID,
>> PRO.PRO_SUP_ID = A.PRO_SUP_ID,
>> PRO.PRO_STK_UNIT2GRAMS = A.PRO_STK_UNIT2GRAMS,
>> PRO.PRO_PURCHASE_UNIT2GRAMS = A.PRO_PURCHASE_UNIT2GRAMS,
>> PRO.PRO_SUPPLIERNUMBER = A.PRO_SUPPLIERNUMBER,
>> PRO.PRO_SUPPLIERDESCRIPTION = A.PRO_SUPPLIERDESCRIPTION
>> FROM MCS_PRODUCTS PRO
>> INNER JOIN MCS_PRODUCTS A
>> ON (PRO.PRO_CODE + 1000000 = A.PRO_CODE)
>> WHERE PRO.PRO_CODE = 14939
>>
>> Sin embargo, al querer ejecutarlo, me da error por ser ambiguo el nombre
>> de la tabla, MCS_PRODUCTS.
>> Alguna idea de cómo puedo hacerlo?
>> Desde ya, muchas gracias.
>>
>> Copenhague, Dinamarca
>>
>>

Mauricio
Copenhague, Dinamarca



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida