0

別のテーブルで等しい値を持つテーブルからすべての行 (更新する必要があるのは 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;

(Nombre と Item が同じである prodnuevos の Costo と Cantidad を使用して、prod で PrecioCompra、PrecioVenta と Cantidad を更新します)

上記のクエリは明らかに機能しませんが、問題を説明したかっただけです。クエリのさまざまな組み合わせを試してみましたが、まったく成功しました。(3 つの列を更新する必要があるにもかかわらず、3 つの異なるクエリを使用する必要があるかどうかは気にしません)

私は次のようなことを試しました

    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))

しかし結果が出ず…

私は何か間違ったことをしていますか?? それともまったく別のクエリですか?? 前もって感謝します。

4

4 に答える 4

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
于 2013-01-10T19:50:37.037 に答える
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
于 2013-01-10T19:49:19.577 に答える
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

また、Nombreとアイテムを選択して、それらが同じであることを確認できますか?これらの2つの列に同じ値が含まれていない可能性があります

于 2013-01-10T19:49:56.193 に答える
1
Update 
    prods 
Set 
  PrecioCompra = prodnuevos.Costo, 
  PrecioVenta = prodnuevos.Costo, 
  Cantidad = prodnuevos.Cantidad 
FROM 
  prodnuevos
WHERE 
  prods.Nombre = prodnuevos.Item
于 2013-01-10T19:57:34.990 に答える