Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/12/2014, 11:58
gralf
 
Fecha de Ingreso: noviembre-2014
Mensajes: 76
Antigüedad: 10 años
Puntos: 0
Respuesta: no consigo haer funcionar a sum()

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Creo que deberías aprender a interpretar los errores ajenos... Es medio evidente que quería referirme en realidad a DEFAULT '0', ¿no te parece?
Precisamente estamos discutiendo eso...


Eso es medio evidente si miras con mucho más cuidado los datos y haces lo que se denomina una "prueba de escritorio". Es altamente probable que estés intentando insertar en un campo que es UNSIGNED un valor negativo, porque el cálculo aritmético interior del SUM() se hace en cada registro, cuando primero deberías obtener las sumas de cada columna...
Código MySQL:
Ver original
  1. SELECT id_item, (compra - taller - venta + regula_mas - regula_menos) stock
  2.   (SELECT
  3.     id_item,
  4.     IFNULL(SUM(compra), 0) compra,
  5.     IFNULL(SUM(taller), 0) taller,
  6.     IFNULL(SUM(venta), 0) venta,
  7.     IFNULL(SUM(regula_mas), 0) regula_mas,
  8.     IFNULL(SUM(regula_menos), 0) regula_menos
  9.   FROM movimiento
  10.   GROUP BY id_item) T1
  11. ORDER BY id_item;

La verdad es que para hacer pruebas tan específicas y crear consultas que te sirvan, necesitaríamos contar con tu propia base, y entender con mucha claridad lo que haces. Pero esa es tu parte de la tarea.

jejejejjejej, tienes razón, pero te veo tan seguro que me hiciste dudar, de todos modos ya has visto que lo he arreglado como te imaginabas.

el error del unsigned me lo daba al hacer la consulta

Código MySQL:
Ver original
  1. SELECT id_item, (compra - taller - venta + regula_mas - regula_menos) stock
  2. FROM movimiento group by id_item)

la verdad me extrañaba, porque los resultados no son negativos, pero he pensado que por el orden igual si en algun momento llegaba a un resultado negativo, con lo que lo ha cambiado por

Código MySQL:
Ver original
  1. SELECT id_item, (compra +regula_mas- taller - venta  - regula_menos) stock
  2. FROM movimiento group by id_item)

et voilá

ha quedado solucionado