Consulta de actualización de SQL mediante uniones
Tengo que actualizar un campo con un valor que se devuelve mediante una combinación de 3 tablas.
Ejemplo:
select
im.itemid
,im.sku as iSku
,gm.SKU as GSKU
,mm.ManufacturerId as ManuId
,mm.ManufacturerName
,im.mf_item_number
,mm.ManufacturerID
from
item_master im, group_master gm, Manufacturer_Master mm
where
im.mf_item_number like 'STA%'
and im.sku=gm.sku
and gm.ManufacturerID = mm.ManufacturerID
and gm.manufacturerID=34
Quiero actualizar los mf_item_number
valores de campo de la tabla item_master
con algún otro valor que esté unido en la condición anterior.
¿Cómo puedo hacer esto en MS SQL Server?
Aceptado
UPDATE im
SET mf_item_number = gm.SKU --etc
FROM item_master im
JOIN group_master gm
ON im.sku = gm.sku
JOIN Manufacturer_Master mm
ON gm.ManufacturerID = mm.ManufacturerID
WHERE im.mf_item_number like 'STA%' AND
gm.manufacturerID = 34
Para que quede claro... La UPDATE
cláusula puede hacer referencia a un alias de tabla especificado en la FROM
cláusula. Entonces im
en este caso es válido.
Ejemplo genérico
UPDATE A
SET foo = B.bar
FROM TableA A
JOIN TableB B
ON A.col1 = B.colx
WHERE ...
Adaptando esto a MySQL: no hay ninguna FROM
cláusula UPDATE
, pero esto funciona:
UPDATE
item_master im
JOIN
group_master gm ON im.sku=gm.sku
JOIN
Manufacturer_Master mm ON gm.ManufacturerID=mm.ManufacturerID
SET
im.mf_item_number = gm.SKU --etc
WHERE
im.mf_item_number like 'STA%'
AND
gm.manufacturerID=34