Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/07/2013, 15:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: update con suma

Cita:
Ojo Leo, puse sumatoria, no es un simple update
Ojo hicolu, ¿tan siquiera hiciste el intento por hacer el UPDATE?, sinceramente lo dudo, porque de haberlo hecho te habrías dado cuenta que es exactamente lo mismo que con SQL...

Como se muestra en el manual:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla1;
  2. +-------------+-------+
  3. | descripcion | total |
  4. +-------------+-------+
  5. | uno         |     0 |
  6. | dos         |     0 |
  7. | tres        |     0 |
  8. +-------------+-------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM tabla2;
  12. +-------------+---------+
  13. | descripcion | parcial |
  14. +-------------+---------+
  15. | uno         |      10 |
  16. | dos         |      20 |
  17. | uno         |       3 |
  18. | dos         |       7 |
  19. +-------------+---------+
  20. 4 rows in set (0.00 sec)
  21.  
  22. mysql> UPDATE tabla1 T1,
  23.     ->        ( SELECT descripcion, SUM(parcial) total
  24.     ->         FROM tabla2
  25.     ->         GROUP BY descripcion ) T2
  26.     -> SET T1.total = T2.total
  27.     -> WHERE T1.descripcion = T2.descripcion;
  28. Query OK, 2 rows affected (0.03 sec)
  29. Rows matched: 2  Changed: 2  Warnings: 0
  30.  
  31. mysql> SELECT * FROM tabla1;
  32. +-------------+-------+
  33. | descripcion | total |
  34. +-------------+-------+
  35. | uno         |    13 |
  36. | dos         |    27 |
  37. | tres        |     0 |
  38. +-------------+-------+
  39. 3 rows in set (0.00 sec)

Utilizando JOIN's:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla1;
  2. +-------------+-------+
  3. | descripcion | total |
  4. +-------------+-------+
  5. | uno         |     0 |
  6. | dos         |     0 |
  7. | tres        |     0 |
  8. +-------------+-------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM tabla2;
  12. +-------------+---------+
  13. | descripcion | parcial |
  14. +-------------+---------+
  15. | uno         |      10 |
  16. | dos         |      20 |
  17. | uno         |       3 |
  18. | dos         |       7 |
  19. +-------------+---------+
  20. 4 rows in set (0.00 sec)
  21.  
  22. mysql> UPDATE tabla1 T1 LEFT JOIN
  23.     ->        ( SELECT descripcion, SUM(parcial) total
  24.     ->          FROM tabla2
  25.     ->          GROUP BY descripcion ) T2 ON T1.descripcion = T2.descripcion
  26.     -> SET T1.total = T2.total;
  27. Query OK, 3 rows affected (0.03 sec)
  28. Rows matched: 3  Changed: 3  Warnings: 0
  29.  
  30. mysql> SELECT * FROM tabla1;
  31. +-------------+-------+
  32. | descripcion | total |
  33. +-------------+-------+
  34. | uno         |    13 |
  35. | dos         |    27 |
  36. | tres        |  NULL |
  37. +-------------+-------+
  38. 3 rows in set (0.00 sec)

Y OJO también, te puse al final:

Cita:
Haz la prueba y nos comentas... si tienes problemas, postea lo que intentaste hacer y si marca algún error, dinos qué error es el que marca. Si el UPDATE no marca error, pero no hace lo que debería, postea algunos datos de ejemplo de cada una de tus tablas y con gusto te ayudamos a afinar la consulta
Saludos
Leo.