2013-01-10 3 views
0

내가 다른 테이블에 동일한 값이 테이블에서 (I 업데이트에만 3 열) 모든 행을 업데이트하기 위해 노력하고있어 ... 여기 다른 테이블의 행에있는 데이터로 테이블의 모든 행을 업데이트하는 방법은 무엇입니까?

내 테이블이 있습니다 ...

CREATE TABLE [dbo].[prods](
    [IdProducto] [int] IDENTITY(1,1) NOT NULL, 
    [IdGrupo] [int] NULL, 
    [IdCategoria] [int] NULL, 
    [IdAlmacen] [varchar](50) NULL, 
    [Codigo] [varchar](50) NULL, 
    [Nombre] [varchar](50) NULL, 
    [Descripcion] [varchar](max) NULL, 
    [Cantidad] [int] NULL, 
    [Imagen] [varchar](max) NULL, 
    [StockMin] [int] NULL, 
    [StockMax] [int] NULL, 
    [Ancho] [varchar](50) NULL, 
    [Alto] [varchar](50) NULL, 
    [Largo] [varchar](50) NULL, 
    [Peso] [varchar](50) NULL, 
    [Volumen] [varchar](50) NULL, 
    [Color] [varchar](50) NULL, 
    [Material] [varchar](50) NULL, 
    [Presentacion] [varchar](50) NULL, 
    [bitPrecioVentaUnico] [int] NULL, 
    [PrecioCompra] [money] NULL, 
    [DescuentoCompra] [float] NULL, 
    [PrecioVenta] [money] NULL, 
    [DescuentoVenta] [float] NULL, 
    [Estado] [varchar](20) NULL 
) 

CREATE TABLE [dbo].[prodnuevos](
    [Codigo] [int] NULL, 
    [itemid] [int] NULL, 
    [Item] [varchar](255) NULL, 
    [Categoria] [varchar](255) NULL, 
    [Cantidad] [int] NULL, 
    [Minima] [nvarchar](255) NULL, 
    [Costo] [money] NULL, 
    [Valor] [money] NULL, 
    [peso] [float] NULL, 
    [unidades] [float] NULL 
) 

내가 뭘 원하는 다음 ..

Update prods 
Set prods.PrecioCompra = prodnuevos.Costo, 
prods.PrecioVenta = prodnuevos.Costo, 
prods.Cantidad = prodnuevos.Cantidad 
WHERE prods.Nombre = prodnuevos.Item; 

(브레와 항목 동일 PRODS 사용 prodnuevos 'Costo 및 Cantidad에서 업데이트 PrecioCompra, PrecioVenta 및 Cantidad)

,536,913입니다

Obviosly 위 쿼리는 작동하지 않지만 방금 내 문제를 설명하고 싶습니다. 나는 성공에 대한 다양한 쿼리 조합을 시도했다. ... 내가

UPDATE  prods c 
    SET   c.PrecioCompra = 
     (SELECT  a.Costo 
     FROM   prodnuevos AS a INNER JOIN 
     prods AS z ON z.Nombre = a.Item 
WHERE  (a.Item = c.Nombre)) 

하지만 결과 같은 것들을 시도

(나는 3 개 개의 다른 쿼리를 사용하는 경우 3 열을 업데이트하는 데에도 불구하고, 난 상관하지 않습니다)

암 I 뭔가 잘못하고 있는거야 ?? 또는 완전히 다른 쿼리입니까? 미리 감사드립니다.

+1

그들에 같은 값을하지 않아도 벌 수 있을까? – Agilox

답변

3
Update prods Set 
prods.PrecioCompra = prodnuevos.Costo, 
prods.PrecioVenta = prodnuevos.Costo, 
prods.Cantidad = prodnuevos.Cantidad 
from prods inner join prodnuevos 
on prods.Nombre = prodnuevos.Item 
1

꽤 가까웠습니다. 이런 식으로 뭔가를 시도 :

또한
UPDATE p SET p.PrecioCompra = pn.Costo, 
    p.PrecioVenta = pn.Costo, 
    p.Cantidad = pn.Cantidad 
FROM prods p 
INNER JOIN prodnuevos pn 
ON p.Nombre = pn.Item 
1
update p 
set 
     p.PrecioCompra = pN.Costo 
    , p.PrecioVenta = pN.Costo 
    , p.Cantidad = pn.Cantidad 
from 
    prods p 
     inner join prodsnuevos pN on p.Nombre = pN.item 

, 당신은 그들이 동일 할 것이라는 점을 확인하기 위해 브레과 항목에 선택을 할 수 있습니까? 그것은이 두 열은 당신이 사용하고있는 DBMS

1
Update 
    prods 
Set 
    PrecioCompra = prodnuevos.Costo, 
    PrecioVenta = prodnuevos.Costo, 
    Cantidad = prodnuevos.Cantidad 
FROM 
    prodnuevos 
WHERE 
    prods.Nombre = prodnuevos.Item 
관련 문제