![]() |
sumar totales de detalle y asignarlo a un campo del maestro!!
Amigos ... estoy haciendo un procedimiento en Firebird que he logrado hacer a medias. Tengo una relacion maestro-detalle entre una tabla productos y otra de compuestos. Los compuestos también contienen datos de la misma tabla productos:
PRODUCTOS IDPRODUCTO PRECIO_COMPRA COMPUESTOS IDCOMPUESTO IDPRODUCTO ID CANTIDAD NOMBRE PRECIO_COMPRA TOTAL_PRECIO_COMPRA La idea es que si se cambia un PRECIO_COMPRA de la tabla productos y ese producto se encuentra en la tabla compuestos (o sea es una composicion de otro producto), entonces que se cambie ese PRECIO_COMPRA de la tabla compuestos para que se actualize el TOTAL_PRECIO_COMPRA. Eso ya lo tengo:
pero lo que necesito es que .... si existe un producto cuyo compuesto sea aquel al cual se le ha modificado su PRECIO_COMPRA, entonces el PRECIO_COMPRA de ese producto es igual a SUM(TOTAL_PRECIO_COMPRA).Lo que quiero es mantener actualizado siempre PRECIO_COMPRA de la tabla productos el cual depende de la suma de los totales de los compuestos. |
En 1er. lugar, creo que el PRECIO_COMPRA de la tabla COMPUESTOS, no deberia estar, si es q hace referencia al verdadero precio del producto, lo rescatas de la propia tabla y listo, para eso es una base de datos relacional.
2do. No me queda claro como se compone el TOTAL_PRECIO_COMPRA 3ro. en este codigo: no deberia igualar con
|
Hola juanlaplata y gracias por responder ....
1º El PRECIO_COMPRA de la tabla compuestos no puede hacer referencia a la tabla productos como llave foranea porque un producto puede tener muchos compuestos, entonces si se cambia el PRECIO_COMPRA de un producto, se van a cambiar todos los PRECIO_COMPRA de sus compuestos, siendo que cada compuesto tiene diferente PRECIO_COMPRA 2. El TOTAL_PRECIO_COMPRA es el producto de CANTIDAD * PRECIO_COMPRA. Todos son campos físicos de la tabla. Lo hice asi porque es necesario para calcular el total de cada columna con un campo Aggregate de un ClientDataSet. 3. En el código el IDPRODUCTO es primary key de la tabla producto y foreing key de la tabla COMPUESTOS, asi q estan enlazadas por este campo. El campo ID guarda la primary key de los productos que se van aagregando a la tabla COMPUESTOS. Aqui hay algo pero no me ha resultado del todo bien http://www.clubdelphi.com/foros/show...=sumar+columna y aunque he trabajado con SQL me cuesta mas que el Delphi. Gracias cualquier ayuda. |
Ok, por la similitud de los nombres no comprendia bien el modelo.
En Oracle se q se puede hacer el SQL todo en uno. Lo que no se si es posible en Firebird, pero no seria mayor inconveniente hacerlo en dos pasos, recolectar 1ro. el monto a actualizar, y luego hacerlo ( update ) Rescatamos el total para ingresar como parametro :compra en el update
|
Gracias ... lo voy a probar y comento como me fue. Gracias mil :)
|
La franja horaria es GMT +2. Ahora son las 12:59:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi