Ver Mensaje Individual
  #7 (permalink)  
Antiguo 28/06/2013, 14:35
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: Hacer una consulta

Hola de nuevo mroblesh06:

Creo que el problema es que no tienes muchos conocimientos sobre SQL... te conviene darte una revisada a cualquier manual de SQL para principiantes. La función MAX() es una función de AGRUPACIÓN... aquí se realiza de manera un tanto "tramposa" pues en realidad no sirve para obtener un valor Máximo. estás funciones se usan por lo general con la cláusula GROUP BY, la cual sirve para AGRUPAR registros semejantes... observa este ejemplo.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +--------+-------+
  3. | nombre | monto |
  4. +--------+-------+
  5. | juan   |    10 |
  6. | juan   |    20 |
  7. | miguel |    15 |
  8. | miguel |    20 |
  9. | juan   |    15 |
  10. +--------+-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT nombre, SUM(monto) FROM tabla;
  14. +--------+------------+
  15. | nombre | SUM(monto) |
  16. +--------+------------+
  17. | juan   |         80 |
  18. +--------+------------+
  19. 1 row in set (0.00 sec)
  20.  
  21. mysql> SELECT nombre, SUM(monto) FROM tabla GROUP BY nombre;
  22. +--------+------------+
  23. | nombre | SUM(monto) |
  24. +--------+------------+
  25. | juan   |         45 |
  26. | miguel |         35 |
  27. +--------+------------+
  28. 2 rows in set (0.00 sec)

Observa que en la segunda consulta, si se omite el GROUP BY te regresa UN SOLO REGISTRO, independientemente de que estés haciendo referencia a dos nombres distintos, haciendo la suma de todos los registros... es eso a lo que me refiero con que tienes que agrupar. Y mucho ojo, si no utilizas una función de agrupación y pones solo el IF, en realidad sólo te va a colocar un registro y las demás columnas las va a poner con NULL

Saludos
Leo.