Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2010
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 96
Poder: 21
TrUnkS Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 23-02-2010
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 20
juanlaplata Va por buen camino
Ok, por la similitud de los nombres no comprendia bien el modelo.
En Oracle se q se puede hacer el SQL todo en uno.
Código SQL [-]
UPDATE PRODUCTOS  
     SET PRECIO_COMPRA = (select sum (TOTAL_PRECIO_COMPRA)                        
                                         from COMPUESTOS                        
                                       where ID = :IDPRODUCTO) 
 WHERE IDPRODUCTO = :IDPRODUCTO;
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
Código SQL [-]
select sum (TOTAL_PRECIO_COMPRA) 
  from COMPUESTOS  
where ID = :IDPRODUCTO;

Código SQL [-]
UPDATE PRODUCTOS  
     SET PRECIO_COMPRA = :COMPRA  
 WHERE IDPRODUCTO = :IDPRODUCTO;
Responder Con Cita
  #3  
Antiguo 23-02-2010
Avatar de TrUnkS
TrUnkS TrUnkS is offline
Miembro
 
Registrado: dic 2005
Posts: 96
Poder: 21
TrUnkS Va por buen camino
Gracias ... lo voy a probar y comento como me fue. Gracias mil
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si el DBGrid (Detalle) esta Vacio en Relacion Maestro/Detalle Adrian Murua Conexión con bases de datos 2 03-01-2009 13:48:46
Sumar totales en QReport flor Impresión 2 19-04-2008 16:50:19
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Sumar totales de una fecha rober_kobe SQL 2 22-10-2007 17:30:33
Como hago un campo calculado en un maestro detalle??? Bitbanner Conexión con bases de datos 1 04-02-2005 22:03:41


La franja horaria es GMT +2. Ahora son las 20:41:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi