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
 

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




Preguntas similares