trigger

05/11/2004 - 15:40 por Julio | Informe spam
Hola Grupo

Tengo lo siguiente tablas

CREATE TABLE [dbo].[Despacho] (
[DespachoID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Numero_Orden] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Tecnicos] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Productos1] (
[ProductoID] [int] IDENTITY (1, 1) NOT NULL ,
[Numero_Orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Nombre] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Precio_Fabricacion] [decimal](18, 0) NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Tarjetas_12v] (
[Inversor1KID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL
) ON [PRIMARY]
GO

ALTER trigger Insert_Producto1
on dbo.Despacho
for insert
as
declare @a numeric

insert into productos1
(producto1.Numero_Orden,producto1.detalle_Orden,producto1.fecha,producto1.nombre,Codigo_ProductoID,precio_Fabricacion)
SELECT Numero_Orden,Detalle_orden,
Fecha,Tecnicos,Codigo_ProductoID,(select sum(Cantidad * precio) from
inserted where numero_orden = numero_orden group by codigo_productoID )
from inserted
where despachoID = despachoID
GROUP BY Numero_Orden,Detalle_orden,Fecha,Tecnicos,Codigo_ProductoID



en esta parte del trigger es que esta mi problema

(select sum(Cantidad * precio) from inserted where numero_orden =
numero_orden )

lo que sucede es que el me suma todos los valores de la tabla inserted sin
tomar en cuenta el numero_orden

ejemplo

Tabla inserted
dispositivoID precio cantidad numero_orden
RR2 2 20 1
RR1 5 20 1
RR2 2 20 2
RR1 5 20 2


Tabla producto1

este es el resultado que necesito
numero_orden precio_fabricacion
1 140
2 140


el resultado que me esta dando actualmente es

numero_orden precio_fabricacion
1 280
2 280

Preguntas similare

Leer las respuestas

#1 Maxi
05/11/2004 - 15:59 | Informe spam
Julio, es que le has dicho que haga eso ;-)


Mira esto a ver si te es util:

SELECT Numero_Orden,Detalle_orden
Fecha,Tecnicos,Codigo_ProductoID, sum(Cantidad * precio) from inserted
GROUP BY Numero_Orden,Detalle_orden,Fecha,Tecnicos,Codigo_ProductoID




Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Julio" escribió en el mensaje
news:
Hola Grupo

Tengo lo siguiente tablas

CREATE TABLE [dbo].[Despacho] (
[DespachoID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Numero_Orden] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Tecnicos] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Productos1] (
[ProductoID] [int] IDENTITY (1, 1) NOT NULL ,
[Numero_Orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Nombre] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Precio_Fabricacion] [decimal](18, 0) NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Tarjetas_12v] (
[Inversor1KID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL
) ON [PRIMARY]
GO

ALTER trigger Insert_Producto1
on dbo.Despacho
for insert
as
declare @a numeric

insert into productos1
(producto1.Numero_Orden,producto1.detalle_Orden,producto1.fecha,producto1.nombre,Codigo_ProductoID,precio_Fabricacion)
SELECT Numero_Orden,Detalle_orden,
Fecha,Tecnicos,Codigo_ProductoID,(select sum(Cantidad * precio) from
inserted where numero_orden = numero_orden group by codigo_productoID )
from inserted
where despachoID = despachoID
GROUP BY Numero_Orden,Detalle_orden,Fecha,Tecnicos,Codigo_ProductoID



en esta parte del trigger es que esta mi problema

(select sum(Cantidad * precio) from inserted where numero_orden =
numero_orden )

lo que sucede es que el me suma todos los valores de la tabla inserted sin
tomar en cuenta el numero_orden

ejemplo

Tabla inserted
dispositivoID precio cantidad numero_orden
RR2 2 20 1
RR1 5 20 1
RR2 2 20 2
RR1 5 20 2


Tabla producto1

este es el resultado que necesito
numero_orden precio_fabricacion
1 140
2 140


el resultado que me esta dando actualmente es

numero_orden precio_fabricacion
1 280
2 280




















Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.788 / Virus Database: 533 - Release Date: 01/11/2004
Respuesta Responder a este mensaje
#2 Julio
05/11/2004 - 17:46 | Informe spam
Gracias Max por tu aporte
"Maxi" wrote in message
news:
Julio, es que le has dicho que haga eso ;-)


Mira esto a ver si te es util:

SELECT Numero_Orden,Detalle_orden
Fecha,Tecnicos,Codigo_ProductoID, sum(Cantidad * precio) from inserted
GROUP BY Numero_Orden,Detalle_orden,Fecha,Tecnicos,Codigo_ProductoID




Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Julio" escribió en el mensaje
news:
Hola Grupo

Tengo lo siguiente tablas

CREATE TABLE [dbo].[Despacho] (
[DespachoID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
,
[Fecha] [datetime] NULL ,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Numero_Orden] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Tecnicos] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Productos1] (
[ProductoID] [int] IDENTITY (1, 1) NOT NULL ,
[Numero_Orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
,
[Fecha] [datetime] NULL ,
[Nombre] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL ,
[Precio_Fabricacion] [decimal](18, 0) NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Tarjetas_12v] (
[Inversor1KID] [int] IDENTITY (1, 1) NOT NULL ,
[DispositivoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
,
[Cantidad] [decimal](18, 0) NULL ,
[Precio] [float] NULL ,
[Detalle_orden] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
,
[Codigo_ProductoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL
) ON [PRIMARY]
GO

ALTER trigger Insert_Producto1
on dbo.Despacho
for insert
as
declare @a numeric

insert into productos1
(producto1.Numero_Orden,producto1.detalle_Orden,producto1.fecha,producto1.nombre,Codigo_ProductoID,precio_Fabricacion)
SELECT Numero_Orden,Detalle_orden,
Fecha,Tecnicos,Codigo_ProductoID,(select sum(Cantidad * precio) from
inserted where numero_orden = numero_orden group by codigo_productoID )
from inserted
where despachoID = despachoID
GROUP BY Numero_Orden,Detalle_orden,Fecha,Tecnicos,Codigo_ProductoID



en esta parte del trigger es que esta mi problema

(select sum(Cantidad * precio) from inserted where numero_orden =
numero_orden )

lo que sucede es que el me suma todos los valores de la tabla inserted
sin tomar en cuenta el numero_orden

ejemplo

Tabla inserted
dispositivoID precio cantidad numero_orden
RR2 2 20 1
RR1 5 20 1
RR2 2 20 2
RR1 5 20 2


Tabla producto1

este es el resultado que necesito
numero_orden precio_fabricacion
1 140
2 140


el resultado que me esta dando actualmente es

numero_orden precio_fabricacion
1 280
2 280




















Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.788 / Virus Database: 533 - Release Date: 01/11/2004

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida