| Subcribe via RSS

MySQL: actualizar un campo con la suma de unos registros de otra tabla

Noviembre 3rd, 2008 Posted in mysql, php

Si tenemos una tabla que queremos actualizar con la suma de valores de otra tabla podemos hacerlo vía programación (lo he visto en un programa que he tenido que modificar recientemente) o lo podemos hacer directamente usando una consulta MySQL.

En este ejemplo en concreto que me encontré había dos tablas:

facturas:

  • num_factura
  • base_imponible

factura_detalle:

  • num_factura
  • articulo
  • precio

La tabla factura_detalle contiene, como el nombre indica, el detalle de las facturas. Cada línea es un artículo y su precio.

La tabla facturas tenía un campo base_imponible que era necesario actualizar con el precio de los artículos de la factura en la tabla factura_detalle.

Esto se puede hacer directamente usando una subconsulta:

UPDATE facturas SET base_imponible =
     ( SELECT sum( precio ) total_calculado
		FROM factura_detalle
		WHERE num_factura = '30')
     WHERE num_factura = '30';

La subconsulta se encarga de buscar todos los registros de la tabla de detalle y sumar los precios:

SELECT sum( precio ) total_calculado
		FROM factura_detalle
		WHERE num_factura = '30')

y la consulta principal lo que hace es asignar ese valor, que sería algo así suponiendo que la anterior hubiese devuelto el valor ‘300′:

UPDATE facturas SET base_imponible = '300'
     WHERE num_factura = '30';


Entradas relacionadas

  1. MySQL – Comprobar si una fecha determinada es hoy
  2. Acceso a MySQL desde Python (la otra forma)
  3. PHP: Cambiar el set de caracteres en una consulta MySQL
  4. Mis categorías han desaparecido al actualizar a WordPress 2.6
  5. Tabla de códigos HTML
Valoración:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (2 votos, media: 3 de 5)
Loading ... Loading ...

3 Responses to “MySQL: actualizar un campo con la suma de unos registros de otra tabla”

  1. josepzin Says:

    ¡Genial! Era justo lo que estaba buscando :)

    Graciass


  2. Alex Castillo Says:

    Me sirvió como no te imaginas! Lo busqué en libtros y nada… Mil Gracias por compartir.


  3. Alex Castillo Says:

    Perdón… libros


Leave a Reply