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

#1 Carlos Sacristan
03/02/2009 - 16:07 | Informe spam
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



Respuesta Responder a este mensaje
#2 Ricardo Passians
03/02/2009 - 16:08 | Informe spam
Prueba a hacerlo con una sub-consulta quizas:

update mcs_products set pro_progrp_id=...,
from mcs_products Pro
inner join (select * from mcs_products) A on ... Pro... = A...
where ...

nota: tambien quitarle el Alias (PRO.) en los SET's.



"Mauricio" escribió en el mensaje
news:
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
#3 Mauricio
03/02/2009 - 16:09 | Informe spam
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
Respuesta Responder a este mensaje
#4 Mauricio
03/02/2009 - 16:12 | Informe spam
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
#5 Mauricio
03/02/2009 - 16:15 | Informe spam
Este funcionó, Ricardo! Muchas gracias!!!!

Ricardo Passians vient de nous annoncer :
Prueba a hacerlo con una sub-consulta quizas:

update mcs_products set pro_progrp_id=...,
from mcs_products Pro
inner join (select * from mcs_products) A on ... Pro... = A...
where ...

nota: tambien quitarle el Alias (PRO.) en los SET's.



"Mauricio" escribió en el mensaje
news:
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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida