Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/02/2013, 15:09
Avatar de andres_15_
andres_15_
 
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: update con un insert

Cita:
Iniciado por jurena Ver Mensaje
A ver, lo que no entiendo es por qué necesitas almacenar un valor que puedes calcular. Dinos qué tablas tienes y los campos. Parece que hay dos tablas, pero precísanos los nombres de los campos y sus relaciones y un par de ejemplos con valores.
Si tú puedes hacer eso sin almacenarlo, por qué emplear recursos. No creo que sea necesaria siquiera la tabla totalcontratos. Imagino que tienes una tabla contratos o algo así relacionada con la tabla facturas por algún campo. Creo que es
Código MySQL:
Ver original
  1. SELECT (c.valorcontrato - SUM(f.valorfactura)) resto
  2.  FROM contratos c
  3.  INNER JOIN facturas f
  4. ON c.idcontrato = f.nfactura
  5.  GROUP BY c.idcontrato
bueno de antemano te agradezco la ayuda . la estructura que tengo es esta:

Tabla 1 (Facturas)

Código MySQL:
Ver original
  1. create table facturas(
  2. nfactura varchar(30) not null,
  3. valorfactura int(50) not null,
  4. ncontrato varchar(40) not null,
  5. primary key(nfactura)
  6. );

tabla 2 (Contratos)

Código MySQL:
Ver original
  1. CREATE TABLE `contratos` (
  2.   `idcontrato` varchar(20) NOT NULL,
  3.   `valorcontrato` mediumint(40) NOT NULL,
  4.   PRIMARY KEY (`idcontrato`)

Tabla 3 (Total contratos) //Aqui es donde guardo el resultado

Código MySQL:
Ver original
  1. create table totalcontratos(
  2. idcontrato varchar(50) not null,
  3. valorcontrato int(50) not null,
  4. nfactura varchar(30) not null,
  5. valorfactura int(50) not null,
  6. total int(60) not null,
  7. primary key(idcontrato,nfactura),
  8. foreign key(idcontrato)
  9. references facturas(ncontrato),
  10. foreign key(nfactura)
  11. references facturas(nfactura)
  12. );

y asi estoy haciendo para que en primera instancia me reste EL VALOR DEL CONTRATO - EL VALOR DE LA FACURA

Código MySQL:
Ver original
  1. insert into totalcontratos(idcontrato,
  2. valorcontrato,
  3. nfactura,
  4. valorfactura,
  5. total)
  6. select c.idcontrato,c.valorcontrato,f.nfactura,f.valorfactura,(c.valorcontrato-f.valorfactura)
  7. from contratos c inner join
  8. facturas f on c.idcontrato=f.ncontrato where f.nfactura=3;

Ahora lo que quiero es que en vez ce restarle de EL VALOR DE EL CONTRATO, me reste de EL VALOR DE EL SALDO QUE GUARDE EN EL TOTAL DE LA TABLA TOTALCONTRATOS