Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/07/2012, 10:09
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: Cómo hago para almacenar diferentes variables y ordenarlas?

Hola sToRaGe:

Voy meter mi cuchara en este tema. OJO, hay una pequeña gran diferencia entre lo que pone gnzsoloyo y lo que estás poniendo tú. gnzsoloyo en su post pone algo como esto:

Código:
... 
SUM(goles) goles, MAX(temporada) Temporada
...
ORDER BY goles DESC
mientras que estás poniendo esto

Código:
...
SUM( `GOLES` ) , MAX( `TEMPORADA` ) 
..
ORDER BY `GOLES` DESC
Observa que gnzsoloyo está poniendo un ALIAS al campo... por lo tanto, al ponerlo en el ORDER BY se refiere al CAMPO CALCULADO, es decir al campo ya sumarizado. En tu caso no estás colocando ningún ALIAS por lo tanto, al ponerlo en el ORDER BY haces referencia al campo individual, es decir, antes de sumarizarse.

Hay otra forma de obtener el resultado que ponías al inicio, y es con sumas condicionales, checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +----------+-------------+-------+
  3. | nombre   | competicion | goles |
  4. +----------+-------------+-------+
  5. | Manolito | Liga        |     2 |
  6. | Manolito | Copa        |     0 |
  7. | Manolito | Mundial     |     5 |
  8. | Pepito   | Liga        |     1 |
  9. | Pepito   | Copa        |     3 |
  10. | Pepito   | Mundial     |     2 |
  11. +----------+-------------+-------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT
  15.     ->   nombre,
  16.     ->   SUM(IF(competicion = 'Liga', goles, 0)) Liga,
  17.     ->   SUM(IF(competicion = 'Copa', goles, 0)) Copa,
  18.     ->   SUM(IF(competicion = 'Mundial', goles, 0)) Mundial,
  19.     ->   SUM(goles) Total
  20.     -> FROM tabla
  21.     -> GROUP BY nombre
  22.     -> ORDER BY Total DESC;
  23. +----------+------+------+---------+-------+
  24. | nombre   | Liga | Copa | Mundial | Total |
  25. +----------+------+------+---------+-------+
  26. | Manolito |    2 |    0 |       5 |     7 |
  27. | Pepito   |    1 |    3 |       2 |     6 |
  28. +----------+------+------+---------+-------+
  29. 2 rows in set (0.00 sec)

Observa que el ORDER BY se haces sobre el ALIAS que estoy declarando (TOTAL) es decir, sobre la suma.

Dale un vistazo y nos comentas.

Saludos
Leo.