2
我有几个表如何使用不同的子查询
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
)
两个表有几分相似的插入表中的多个行,都有产品,prodnuevos列表(我们可以考虑西班牙语为新产品),有一个比prods更多的扩展列表(我们称之为产品)
我想要做的是使用查询将插入所有可用的行在不在产品中提供的新产品...
我已经试过这漫长的查询
INSERT INTO prods (IdGrupo, IdAlmacen, Codigo, Nombre, Descripcion, Cantidad, Imagen, StockMin,StockMax, Ancho, Alto, Largo, Peso, Volumen, Color, Material, Presentacion, bitPrecioVentaUnico, PrecioCompra, DescuentoCompra, PrecioVenta, DescuentoVenta, Estado)
VALUES (1, 'Ninguno', (Select prodnuevos.Codigo FROM prodnuevos LEFT JOIN prods ON prodnuevos.Item = prods.Nombre WHERE prods.Nombre IS NULL), (Select prodnuevos.Item FROM prodnuevos LEFT JOIN prods ON prodnuevos.Item = prods.Nombre WHERE prods.Nombre IS NULL), '', (Select prodnuevos.Cantidad FROM prodnuevos LEFT JOIN prods ON prodnuevos.Item = prods.Nombre WHERE prods.Nombre IS NULL), '', 0, 0, '', '', '', '', '', '', '', 'Ninguno', 0, (Select prodnuevos.Costo FROM prodnuevos LEFT JOIN prods ON prodnuevos.Item = prods.Nombre WHERE prods.Nombre IS NULL), 0, 0, 0, 'Activo');
当我尝试,我得到了以下错误
子查询比返回多1值。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。
我想知道如何正确使用此查询。
顺便说一下,是否还有一种方法,我可以使用较少的子查询,而不是重复它不同的次数?
谢谢
+1好主意,从未这样想过 – exexzian