Suma detalle y hacer join

07/01/2004 - 18:34 por Julio | Informe spam
Hola grupo tengo el siguiente problema haber si me pueden dar una mano.

Tengo que crear uan base de datos para generar una orden de compra ya que
esta se lleva en excel.

Tengo creada una tabla llamada ordendecompra y una tabla llamada
detalleDeCompras
en la tabla ordendecompra pongo los encabezado de la ordenes de compras y en
detalles tengo los item que se van agregando en la orden de compra
En la tabla ordendecompras tengo un campo llamado total que es quien contine
el total de la suma de cada item con requerencia al campo compraID
lo que quiero hacer es un join para unir ambas tablas y hacer una sola, pero
cuando hago el Join el total se me retipe por cada Item de la orden, Lo que
quiero saber es como se implementa este tipo de base de datos ? Quiero saber
si es correcto lo que tengo y como puedo resolver el problema que tengo.

Nota:
Quiero saber como puedo unir ambas tabla.

Gracias.



Create table OrdenDeCompra
(CompraID int identity(1,1)
primary key clustered,
OrdenNumero varchar (20)not null
constraint U_OrdenNumero unique (OrdenNumero),
suplidorID int not null,
RequisicionID int not null,
Ordencancelada varchar (15)null,
Cargado varchar not null,
fecha datetime not null,
Empleado varchar (30) DEFAULT SUSER_Sname(),
status varchar (200),
Condicion bit default (1),
Nota varchar (200),
ParaUso varchar (30),
Condiciones varchar (20),
Solicitado varchar (30)not null,
Total money,
Constraint FK_SuplidorID_OrdenDeCompra foreign key (SuplidorID)
references Suplidor (SuplidorID),
Constraint FK_RequisicionesID_OrdenDeCompra foreign key (RequisicionID)
references RequisicionPorDepartamento (RequisicionID)on delete cascade,
)

go

Create table detalleDeCompras
(detalleid int identity(1,1)
Primary key,
CompraID int,
Articulo varchar (25)not null,
Descripcion varchar (200) null,
Cantidad Money not null,
Unidad varchar (30) not null,
PrecioUnitario Money not null,
SubTotal as (cantidad * PrecioUnitario),
constraint detalleDeCompras_OrdenDeCompra foreign key (CompraID)
references OrdenDecompra (CompraID)on delete cascade)

go
SELECT dbo.OrdenDeCompra.OrdenNumero, dbo.OrdenDeCompra.suplidorID,
dbo.OrdenDeCompra.RequisicionID, dbo.OrdenDeCompra.Ordencancelada,
dbo.OrdenDeCompra.Cargado, dbo.OrdenDeCompra.fecha,
dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
dbo.OrdenDeCompra.Condicion, dbo.OrdenDeCompra.Nota,
dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
dbo.OrdenDeCompra.Solicitado,
dbo.detalleDeCompras.Articulo, dbo.detalleDeCompras.Descripcion,
dbo.detalleDeCompras.Cantidad,
dbo.detalleDeCompras.Unidad, dbo.detalleDeCompras.PrecioUnitario,
dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
FROM dbo.OrdenDeCompra INNER JOIN dbo.detalleDeCompras ON
dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
WHERE (dbo.OrdenDeCompra.Condicion = 1)

Go
create trigger Insert_detalleDeCompras
on detalleDeCompras
for insert,update,delete
as
if @@rowcount = 0
return
update ordenDecompra
set ordenDecompra.total=(select sum(detalleDeCompras.Subtotal)
from detalleDeCompras
where detalleDeCompras.CompraID=ordendecompra.compraID)
from detalleDeCompras inner Join ordendecompra on
detalleDeCompras.compraid=ordendecompra.compraid

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
07/01/2004 - 18:46 | Informe spam
Hola, si vos estas emitiendo un detalle de linea a linea, yo solo pondria
los subtotales ya que luego podes agrupar en tu Excel por ej con una Tabla
dinamica y armar el resto.

Pasa lo mismo que con cualquier otro dato de esa cabecera, por ej el
Proveedor no?.

Te cuento que generamos muchos de estas cosas con Excel para usar luego
tablas Dinamicas, entonces lo que hacemos es una herramienta que te da el
detalle (como lo queres hacer vos) y que desde ahi a gusto de cada usuario y
necesidad se armen las Tablas Dinamicas neesarias.

Porque por ej luego vas a tener q uno te pide:

quiero agrupar por Prov y que me diga el monto, otro que lo quiere por OC,
otro por Pais, otro por arituclo y asi nunca terminas mas.

En lugar de armarles un Select agrupado para cada ñato, entonces se arma la
aplicacion detalle (con los datos autorizados a mostrar no?) y luego de ahi
se arman las Tablas.

Te digo que es muy practico y tenes mucho poder ;-) con una herramienta tan
standard como un Excel (que ademas la saben usar casi todos ;-))

pd: si te interesa te puedo mandar una de ejemplo asi ves como la armamos,
eso si mandame un mail al privado:

Maxi_accotto[arroba]speedy[.]com[.]ar

Salu2
Maximiliano Damian Accotto


"Julio" escribió en el mensaje
news:
Hola grupo tengo el siguiente problema haber si me pueden dar una mano.

Tengo que crear uan base de datos para generar una orden de compra ya que
esta se lleva en excel.

Tengo creada una tabla llamada ordendecompra y una tabla llamada
detalleDeCompras
en la tabla ordendecompra pongo los encabezado de la ordenes de compras y


en
detalles tengo los item que se van agregando en la orden de compra
En la tabla ordendecompras tengo un campo llamado total que es quien


contine
el total de la suma de cada item con requerencia al campo compraID
lo que quiero hacer es un join para unir ambas tablas y hacer una sola,


pero
cuando hago el Join el total se me retipe por cada Item de la orden, Lo


que
quiero saber es como se implementa este tipo de base de datos ? Quiero


saber
si es correcto lo que tengo y como puedo resolver el problema que tengo.

Nota:
Quiero saber como puedo unir ambas tabla.

Gracias.



Create table OrdenDeCompra
(CompraID int identity(1,1)
primary key clustered,
OrdenNumero varchar (20)not null
constraint U_OrdenNumero unique (OrdenNumero),
suplidorID int not null,
RequisicionID int not null,
Ordencancelada varchar (15)null,
Cargado varchar not null,
fecha datetime not null,
Empleado varchar (30) DEFAULT SUSER_Sname(),
status varchar (200),
Condicion bit default (1),
Nota varchar (200),
ParaUso varchar (30),
Condiciones varchar (20),
Solicitado varchar (30)not null,
Total money,
Constraint FK_SuplidorID_OrdenDeCompra foreign key (SuplidorID)
references Suplidor (SuplidorID),
Constraint FK_RequisicionesID_OrdenDeCompra foreign key (RequisicionID)
references RequisicionPorDepartamento (RequisicionID)on delete cascade,
)

go

Create table detalleDeCompras
(detalleid int identity(1,1)
Primary key,
CompraID int,
Articulo varchar (25)not null,
Descripcion varchar (200) null,
Cantidad Money not null,
Unidad varchar (30) not null,
PrecioUnitario Money not null,
SubTotal as (cantidad * PrecioUnitario),
constraint detalleDeCompras_OrdenDeCompra foreign key (CompraID)
references OrdenDecompra (CompraID)on delete cascade)

go
SELECT dbo.OrdenDeCompra.OrdenNumero, dbo.OrdenDeCompra.suplidorID,
dbo.OrdenDeCompra.RequisicionID, dbo.OrdenDeCompra.Ordencancelada,
dbo.OrdenDeCompra.Cargado, dbo.OrdenDeCompra.fecha,
dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
dbo.OrdenDeCompra.Condicion, dbo.OrdenDeCompra.Nota,
dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
dbo.OrdenDeCompra.Solicitado,
dbo.detalleDeCompras.Articulo, dbo.detalleDeCompras.Descripcion,
dbo.detalleDeCompras.Cantidad,
dbo.detalleDeCompras.Unidad, dbo.detalleDeCompras.PrecioUnitario,
dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
FROM dbo.OrdenDeCompra INNER JOIN dbo.detalleDeCompras ON
dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
WHERE (dbo.OrdenDeCompra.Condicion = 1)

Go
create trigger Insert_detalleDeCompras
on detalleDeCompras
for insert,update,delete
as
if @@rowcount = 0
return
update ordenDecompra
set ordenDecompra.total=(select sum(detalleDeCompras.Subtotal)
from detalleDeCompras
where detalleDeCompras.CompraID=ordendecompra.compraID)
from detalleDeCompras inner Join ordendecompra on
detalleDeCompras.compraid=ordendecompra.compraid




Respuesta Responder a este mensaje
#2 Julio
07/01/2004 - 19:41 | Informe spam
Hola Maximiliano, La tabla de excel no se usara quiero hacer una base de
datos en sql y hacer el interface grafico con visul Basic.
"Maximiliano Damian Accotto" <maxi_accotto[arroba]speedy.com.ar.SACAME>
wrote in message news:
Hola, si vos estas emitiendo un detalle de linea a linea, yo solo pondria
los subtotales ya que luego podes agrupar en tu Excel por ej con una Tabla
dinamica y armar el resto.

Pasa lo mismo que con cualquier otro dato de esa cabecera, por ej el
Proveedor no?.

Te cuento que generamos muchos de estas cosas con Excel para usar luego
tablas Dinamicas, entonces lo que hacemos es una herramienta que te da el
detalle (como lo queres hacer vos) y que desde ahi a gusto de cada usuario


y
necesidad se armen las Tablas Dinamicas neesarias.

Porque por ej luego vas a tener q uno te pide:

quiero agrupar por Prov y que me diga el monto, otro que lo quiere por OC,
otro por Pais, otro por arituclo y asi nunca terminas mas.

En lugar de armarles un Select agrupado para cada ñato, entonces se arma


la
aplicacion detalle (con los datos autorizados a mostrar no?) y luego de


ahi
se arman las Tablas.

Te digo que es muy practico y tenes mucho poder ;-) con una herramienta


tan
standard como un Excel (que ademas la saben usar casi todos ;-))

pd: si te interesa te puedo mandar una de ejemplo asi ves como la armamos,
eso si mandame un mail al privado:

Maxi_accotto[arroba]speedy[.]com[.]ar

Salu2
Maximiliano Damian Accotto


"Julio" escribió en el mensaje
news:
> Hola grupo tengo el siguiente problema haber si me pueden dar una mano.
>
> Tengo que crear uan base de datos para generar una orden de compra ya


que
> esta se lleva en excel.
>
> Tengo creada una tabla llamada ordendecompra y una tabla llamada
> detalleDeCompras
> en la tabla ordendecompra pongo los encabezado de la ordenes de compras


y
en
> detalles tengo los item que se van agregando en la orden de compra
> En la tabla ordendecompras tengo un campo llamado total que es quien
contine
> el total de la suma de cada item con requerencia al campo compraID
> lo que quiero hacer es un join para unir ambas tablas y hacer una sola,
pero
> cuando hago el Join el total se me retipe por cada Item de la orden, Lo
que
> quiero saber es como se implementa este tipo de base de datos ? Quiero
saber
> si es correcto lo que tengo y como puedo resolver el problema que tengo.
>
> Nota:
> Quiero saber como puedo unir ambas tabla.
>
> Gracias.
>
>
>
> Create table OrdenDeCompra
> (CompraID int identity(1,1)
> primary key clustered,
> OrdenNumero varchar (20)not null
> constraint U_OrdenNumero unique (OrdenNumero),
> suplidorID int not null,
> RequisicionID int not null,
> Ordencancelada varchar (15)null,
> Cargado varchar not null,
> fecha datetime not null,
> Empleado varchar (30) DEFAULT SUSER_Sname(),
> status varchar (200),
> Condicion bit default (1),
> Nota varchar (200),
> ParaUso varchar (30),
> Condiciones varchar (20),
> Solicitado varchar (30)not null,
> Total money,
> Constraint FK_SuplidorID_OrdenDeCompra foreign key (SuplidorID)
> references Suplidor (SuplidorID),
> Constraint FK_RequisicionesID_OrdenDeCompra foreign key (RequisicionID)
> references RequisicionPorDepartamento (RequisicionID)on delete cascade,
> )
>
> go
>
> Create table detalleDeCompras
> (detalleid int identity(1,1)
> Primary key,
> CompraID int,
> Articulo varchar (25)not null,
> Descripcion varchar (200) null,
> Cantidad Money not null,
> Unidad varchar (30) not null,
> PrecioUnitario Money not null,
> SubTotal as (cantidad * PrecioUnitario),
> constraint detalleDeCompras_OrdenDeCompra foreign key (CompraID)
> references OrdenDecompra (CompraID)on delete cascade)
>
> go
> SELECT dbo.OrdenDeCompra.OrdenNumero, dbo.OrdenDeCompra.suplidorID,
> dbo.OrdenDeCompra.RequisicionID, dbo.OrdenDeCompra.Ordencancelada,
> dbo.OrdenDeCompra.Cargado,


dbo.OrdenDeCompra.fecha,
> dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
> dbo.OrdenDeCompra.Condicion,


dbo.OrdenDeCompra.Nota,
> dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
> dbo.OrdenDeCompra.Solicitado,
> dbo.detalleDeCompras.Articulo, dbo.detalleDeCompras.Descripcion,
> dbo.detalleDeCompras.Cantidad,
> dbo.detalleDeCompras.Unidad, dbo.detalleDeCompras.PrecioUnitario,
> dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
> FROM dbo.OrdenDeCompra INNER JOIN dbo.detalleDeCompras ON
> dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
> WHERE (dbo.OrdenDeCompra.Condicion = 1)
>
> Go
> create trigger Insert_detalleDeCompras
> on detalleDeCompras
> for insert,update,delete
> as
> if @@rowcount = 0
> return
> update ordenDecompra
> set ordenDecompra.total=(select sum(detalleDeCompras.Subtotal)
> from detalleDeCompras
> where detalleDeCompras.CompraID=ordendecompra.compraID)
> from detalleDeCompras inner Join ordendecompra on
> detalleDeCompras.compraid=ordendecompra.compraid
>
>
>
>


Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
07/01/2004 - 19:48 | Informe spam
Si lo que estas pensando hacer es un Datawarehouse o algo asi, con Vb se te
complicara un poco la cosa :-(, hay un par de clases piolas para usar que
ahora francamente no recuerdo para nada.

Otra opcion es meterte en el mundo de Cubos OLAP por ej.

Va no se como queres mostrar la cosa en tu Front, porque hay varias formas
de hacer esto.

Maximiliano Damian Accotto


"Julio" escribió en el mensaje
news:
Hola Maximiliano, La tabla de excel no se usara quiero hacer una base de
datos en sql y hacer el interface grafico con visul Basic.
"Maximiliano Damian Accotto" <maxi_accotto[arroba]speedy.com.ar.SACAME>
wrote in message news:
> Hola, si vos estas emitiendo un detalle de linea a linea, yo solo


pondria
> los subtotales ya que luego podes agrupar en tu Excel por ej con una


Tabla
> dinamica y armar el resto.
>
> Pasa lo mismo que con cualquier otro dato de esa cabecera, por ej el
> Proveedor no?.
>
> Te cuento que generamos muchos de estas cosas con Excel para usar luego
> tablas Dinamicas, entonces lo que hacemos es una herramienta que te da


el
> detalle (como lo queres hacer vos) y que desde ahi a gusto de cada


usuario
y
> necesidad se armen las Tablas Dinamicas neesarias.
>
> Porque por ej luego vas a tener q uno te pide:
>
> quiero agrupar por Prov y que me diga el monto, otro que lo quiere por


OC,
> otro por Pais, otro por arituclo y asi nunca terminas mas.
>
> En lugar de armarles un Select agrupado para cada ñato, entonces se arma
la
> aplicacion detalle (con los datos autorizados a mostrar no?) y luego de
ahi
> se arman las Tablas.
>
> Te digo que es muy practico y tenes mucho poder ;-) con una herramienta
tan
> standard como un Excel (que ademas la saben usar casi todos ;-))
>
> pd: si te interesa te puedo mandar una de ejemplo asi ves como la


armamos,
> eso si mandame un mail al privado:
>
> Maxi_accotto[arroba]speedy[.]com[.]ar
>
> Salu2
> Maximiliano Damian Accotto
>
>
> "Julio" escribió en el mensaje
> news:
> > Hola grupo tengo el siguiente problema haber si me pueden dar una


mano.
> >
> > Tengo que crear uan base de datos para generar una orden de compra ya
que
> > esta se lleva en excel.
> >
> > Tengo creada una tabla llamada ordendecompra y una tabla llamada
> > detalleDeCompras
> > en la tabla ordendecompra pongo los encabezado de la ordenes de


compras
y
> en
> > detalles tengo los item que se van agregando en la orden de compra
> > En la tabla ordendecompras tengo un campo llamado total que es quien
> contine
> > el total de la suma de cada item con requerencia al campo compraID
> > lo que quiero hacer es un join para unir ambas tablas y hacer una


sola,
> pero
> > cuando hago el Join el total se me retipe por cada Item de la orden,


Lo
> que
> > quiero saber es como se implementa este tipo de base de datos ? Quiero
> saber
> > si es correcto lo que tengo y como puedo resolver el problema que


tengo.
> >
> > Nota:
> > Quiero saber como puedo unir ambas tabla.
> >
> > Gracias.
> >
> >
> >
> > Create table OrdenDeCompra
> > (CompraID int identity(1,1)
> > primary key clustered,
> > OrdenNumero varchar (20)not null
> > constraint U_OrdenNumero unique (OrdenNumero),
> > suplidorID int not null,
> > RequisicionID int not null,
> > Ordencancelada varchar (15)null,
> > Cargado varchar not null,
> > fecha datetime not null,
> > Empleado varchar (30) DEFAULT SUSER_Sname(),
> > status varchar (200),
> > Condicion bit default (1),
> > Nota varchar (200),
> > ParaUso varchar (30),
> > Condiciones varchar (20),
> > Solicitado varchar (30)not null,
> > Total money,
> > Constraint FK_SuplidorID_OrdenDeCompra foreign key (SuplidorID)
> > references Suplidor (SuplidorID),
> > Constraint FK_RequisicionesID_OrdenDeCompra foreign key


(RequisicionID)
> > references RequisicionPorDepartamento (RequisicionID)on delete


cascade,
> > )
> >
> > go
> >
> > Create table detalleDeCompras
> > (detalleid int identity(1,1)
> > Primary key,
> > CompraID int,
> > Articulo varchar (25)not null,
> > Descripcion varchar (200) null,
> > Cantidad Money not null,
> > Unidad varchar (30) not null,
> > PrecioUnitario Money not null,
> > SubTotal as (cantidad * PrecioUnitario),
> > constraint detalleDeCompras_OrdenDeCompra foreign key (CompraID)
> > references OrdenDecompra (CompraID)on delete cascade)
> >
> > go
> > SELECT dbo.OrdenDeCompra.OrdenNumero,


dbo.OrdenDeCompra.suplidorID,
> > dbo.OrdenDeCompra.RequisicionID, dbo.OrdenDeCompra.Ordencancelada,
> > dbo.OrdenDeCompra.Cargado,
dbo.OrdenDeCompra.fecha,
> > dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
> > dbo.OrdenDeCompra.Condicion,
dbo.OrdenDeCompra.Nota,
> > dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
> > dbo.OrdenDeCompra.Solicitado,
> > dbo.detalleDeCompras.Articulo, dbo.detalleDeCompras.Descripcion,
> > dbo.detalleDeCompras.Cantidad,
> > dbo.detalleDeCompras.Unidad, dbo.detalleDeCompras.PrecioUnitario,
> > dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
> > FROM dbo.OrdenDeCompra INNER JOIN dbo.detalleDeCompras ON
> > dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
> > WHERE (dbo.OrdenDeCompra.Condicion = 1)
> >
> > Go
> > create trigger Insert_detalleDeCompras
> > on detalleDeCompras
> > for insert,update,delete
> > as
> > if @@rowcount = 0
> > return
> > update ordenDecompra
> > set ordenDecompra.total=(select sum(detalleDeCompras.Subtotal)
> > from detalleDeCompras
> > where detalleDeCompras.CompraID=ordendecompra.compraID)
> > from detalleDeCompras inner Join ordendecompra on
> > detalleDeCompras.compraid=ordendecompra.compraid
> >
> >
> >
> >
>
>


Respuesta Responder a este mensaje
#4 ulises
07/01/2004 - 20:15 | Informe spam
Hola Julio,

La verdad no entiendo cual es el problema que tienes, he
revisado la estructura y me parece correcto.

En cuanto el JOIN es correcto que las columnas de la tabla
base se repitan cuando haces el join, y si estas
incluyendo el monto total esta se repetirá en todas las
registros del resultado.

Si pudieras ser más especifico ... :)

Saludos,
Ulises

Hola grupo tengo el siguiente problema haber si me pueden


dar una mano.

Tengo que crear uan base de datos para generar una orden


de compra ya que
esta se lleva en excel.

Tengo creada una tabla llamada ordendecompra y una tabla


llamada
detalleDeCompras
en la tabla ordendecompra pongo los encabezado de la


ordenes de compras y en
detalles tengo los item que se van agregando en la orden


de compra
En la tabla ordendecompras tengo un campo llamado total


que es quien contine
el total de la suma de cada item con requerencia al campo


compraID
lo que quiero hacer es un join para unir ambas tablas y


hacer una sola, pero
cuando hago el Join el total se me retipe por cada Item


de la orden, Lo que
quiero saber es como se implementa este tipo de base de


datos ? Quiero saber
si es correcto lo que tengo y como puedo resolver el


problema que tengo.

Nota:
Quiero saber como puedo unir ambas tabla.

Gracias.



Create table OrdenDeCompra
(CompraID int identity(1,1)
primary key clustered,
OrdenNumero varchar (20)not null
constraint U_OrdenNumero unique (OrdenNumero),
suplidorID int not null,
RequisicionID int not null,
Ordencancelada varchar (15)null,
Cargado varchar not null,
fecha datetime not null,
Empleado varchar (30) DEFAULT SUSER_Sname(),
status varchar (200),
Condicion bit default (1),
Nota varchar (200),
ParaUso varchar (30),
Condiciones varchar (20),
Solicitado varchar (30)not null,
Total money,
Constraint FK_SuplidorID_OrdenDeCompra foreign key


(SuplidorID)
references Suplidor (SuplidorID),
Constraint FK_RequisicionesID_OrdenDeCompra foreign key


(RequisicionID)
references RequisicionPorDepartamento (RequisicionID)on


delete cascade,
)

go

Create table detalleDeCompras
(detalleid int identity(1,1)
Primary key,
CompraID int,
Articulo varchar (25)not null,
Descripcion varchar (200) null,
Cantidad Money not null,
Unidad varchar (30) not null,
PrecioUnitario Money not null,
SubTotal as (cantidad * PrecioUnitario),
constraint detalleDeCompras_OrdenDeCompra foreign key


(CompraID)
references OrdenDecompra (CompraID)on delete cascade)

go
SELECT dbo.OrdenDeCompra.OrdenNumero,


dbo.OrdenDeCompra.suplidorID,
dbo.OrdenDeCompra.RequisicionID,


dbo.OrdenDeCompra.Ordencancelada,
dbo.OrdenDeCompra.Cargado,


dbo.OrdenDeCompra.fecha,
dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
dbo.OrdenDeCompra.Condicion,


dbo.OrdenDeCompra.Nota,
dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
dbo.OrdenDeCompra.Solicitado,
dbo.detalleDeCompras.Articulo,


dbo.detalleDeCompras.Descripcion,
dbo.detalleDeCompras.Cantidad,
dbo.detalleDeCompras.Unidad,


dbo.detalleDeCompras.PrecioUnitario,
dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
FROM dbo.OrdenDeCompra INNER JOIN


dbo.detalleDeCompras ON
dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
WHERE (dbo.OrdenDeCompra.Condicion = 1)

Go
create trigger Insert_detalleDeCompras
on detalleDeCompras
for insert,update,delete
as
if @@rowcount = 0
return
update ordenDecompra
set ordenDecompra.total=(select sum


(detalleDeCompras.Subtotal)
from detalleDeCompras
where detalleDeCompras.CompraID=ordendecompra.compraID)
from detalleDeCompras inner Join ordendecompra on
detalleDeCompras.compraid=ordendecompra.compraid
Respuesta Responder a este mensaje
#5 Miguel Egea
07/01/2004 - 23:35 | Informe spam
Veamos por partes
lo primero que quieres hacer es un sumatorio
en tu caso podría ser algo parecido a esto

/* codigo sin probar */
Select Compraid,sum(Subtotal) Total
from OrdenDeCompra o inner join detalledecompras d
on o.Compraid=d.compraid
group by compraid

El trigger que declaras en tu pie esta mal implementado,
Los triggers tienen dos tablas virtuales que existen per-se que son inserted
y deleted
Busca en http://www.portalsql.com por tirggers y verás varios ejemplos,
simplemente amoldalo a tu necesidad.

El otro día tuvimos una pequeña charla en este mismo grupo sobre si triggers
o vistas indexadas, creo que sería enriquecedor paratí que lo leyeses.


Saludos
Miguel Egea


"Julio" escribió en el mensaje
news:
Hola grupo tengo el siguiente problema haber si me pueden dar una mano.

Tengo que crear uan base de datos para generar una orden de compra ya que
esta se lleva en excel.

Tengo creada una tabla llamada ordendecompra y una tabla llamada
detalleDeCompras
en la tabla ordendecompra pongo los encabezado de la ordenes de compras y


en
detalles tengo los item que se van agregando en la orden de compra
En la tabla ordendecompras tengo un campo llamado total que es quien


contine
el total de la suma de cada item con requerencia al campo compraID
lo que quiero hacer es un join para unir ambas tablas y hacer una sola,


pero
cuando hago el Join el total se me retipe por cada Item de la orden, Lo


que
quiero saber es como se implementa este tipo de base de datos ? Quiero


saber
si es correcto lo que tengo y como puedo resolver el problema que tengo.

Nota:
Quiero saber como puedo unir ambas tabla.

Gracias.



Create table OrdenDeCompra
(CompraID int identity(1,1)
primary key clustered,
OrdenNumero varchar (20)not null
constraint U_OrdenNumero unique (OrdenNumero),
suplidorID int not null,
RequisicionID int not null,
Ordencancelada varchar (15)null,
Cargado varchar not null,
fecha datetime not null,
Empleado varchar (30) DEFAULT SUSER_Sname(),
status varchar (200),
Condicion bit default (1),
Nota varchar (200),
ParaUso varchar (30),
Condiciones varchar (20),
Solicitado varchar (30)not null,
Total money,
Constraint FK_SuplidorID_OrdenDeCompra foreign key (SuplidorID)
references Suplidor (SuplidorID),
Constraint FK_RequisicionesID_OrdenDeCompra foreign key (RequisicionID)
references RequisicionPorDepartamento (RequisicionID)on delete cascade,
)

go

Create table detalleDeCompras
(detalleid int identity(1,1)
Primary key,
CompraID int,
Articulo varchar (25)not null,
Descripcion varchar (200) null,
Cantidad Money not null,
Unidad varchar (30) not null,
PrecioUnitario Money not null,
SubTotal as (cantidad * PrecioUnitario),
constraint detalleDeCompras_OrdenDeCompra foreign key (CompraID)
references OrdenDecompra (CompraID)on delete cascade)

go
SELECT dbo.OrdenDeCompra.OrdenNumero, dbo.OrdenDeCompra.suplidorID,
dbo.OrdenDeCompra.RequisicionID, dbo.OrdenDeCompra.Ordencancelada,
dbo.OrdenDeCompra.Cargado, dbo.OrdenDeCompra.fecha,
dbo.OrdenDeCompra.Empleado, dbo.OrdenDeCompra.status,
dbo.OrdenDeCompra.Condicion, dbo.OrdenDeCompra.Nota,
dbo.OrdenDeCompra.ParaUso, dbo.OrdenDeCompra.Condiciones,
dbo.OrdenDeCompra.Solicitado,
dbo.detalleDeCompras.Articulo, dbo.detalleDeCompras.Descripcion,
dbo.detalleDeCompras.Cantidad,
dbo.detalleDeCompras.Unidad, dbo.detalleDeCompras.PrecioUnitario,
dbo.detalleDeCompras.SubTotal,dbo.OrdenDeCompra.Total
FROM dbo.OrdenDeCompra INNER JOIN dbo.detalleDeCompras ON
dbo.OrdenDeCompra.CompraID = dbo.detalleDeCompras.CompraID
WHERE (dbo.OrdenDeCompra.Condicion = 1)

Go
create trigger Insert_detalleDeCompras
on detalleDeCompras
for insert,update,delete
as
if @@rowcount = 0
return
update ordenDecompra
set ordenDecompra.total=(select sum(detalleDeCompras.Subtotal)
from detalleDeCompras
where detalleDeCompras.CompraID=ordendecompra.compraID)
from detalleDeCompras inner Join ordendecompra on
detalleDeCompras.compraid=ordendecompra.compraid




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida