Amigos, no soy un experto en SQL,
Trabajo para una constructora, por lo que la tabla de Insumos o materiales
es muy extensa y variable, por lo que después de evaluar todas las
alternativas, un material se define de la siguiente forma
tblMateriales(1) tblPresentaMaterial (2) tblMarcaMaterial(3)
tblModeloMaterial(4) tblColorMaterial(5)
idMaterial idMaterial idMaterial
idMaterial idMaterial
NMaterial Presentacion MarcaMaterial
ModeloMaterial ColorMaterial
undMat Equivalencia
La combinación de estas 5 tablas nos permiten definir satisfactoriamente un
material
Una Orden de Compra (OC) (pedidos de mercaderia a los proveedores registra
la sgte informacion)
idObra (obra a la que pertenece), idMaterial (insumo), Presentacion (puede
ser nula), Marca (puede ser nula), Modelo (puede ser nula), Color (puede ser
nula), CantPedida
Una guía de recepcion(GR) (mercaderia enviada en un proveedor a una obra
registra la siguiente informacion)
idObra (obra a la que pertenece), idMaterial (insumo), Presentacion (puede
ser nula), Marca (puede ser nula), Modelo (puede ser nula), Color (puede ser
nula), CantRecibida
Quiero elaborar un reporte que presente: idObra, idMaterial, Presentacion,
Marca, Modelo, Color, CantPedida, CantRecibida, SaldoporLlegar
Este reporte podría tener la sgte información (ejemplo)
"XXX", 15, CAJA 25KG,NULL,NULL,NULL,25,15
"XXX",25,,PHILIPS,X1,AZUL,20,0
"XXX,25,,PHILIPS,X1,ROJO,40,10
...
Por ahora se me ocurrio, eliminar cualquier información de la tabla
inventarioObra (la que almacenara la información para el reporte) y hacer un
SELECT DISTINCT de idMaterial, Presentacio,Marca, Modelo, Color de las c/u
de las 2 tablas y con un cursor, agregar una única combinacion de
idMaterial, Presentacion, Marca, Modelo, Color en la tabla
"inventarioObra", y luego actualizar este insumo con lo pedido y lo recibido
y el saldoporLlegar
Pero lo encuentro un poco engorroso, se les ocurren otras alternativas,
descarto un trigger porque ya tengo información almacenada en las tablas de
OC y GR
Disculpen lo extenso, pero preferí colocar toda la información para que no
hayan dudas sobre la información que se maneja.
Gracias
Gustavo
Leer las respuestas