Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/09/2011, 10:25
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: ORdenar por dos campos diferentes

hola kadet:

No sé a que te refieres cuando dices que la consulta del compañero gnzsoloyo no funciona... La consulta funciona perfectamente, y aquí está el script para demostrarlo.

Código MySQL:
Ver original
  1. mysql> CREATE TABLE TuTabla (mes INT, dia INT);
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> INSERT INTO TuTabla VALUES (1, 25), (1, 1),
  5.     -> (10, 20), (6, 30), (1, 31), (8, 2), (6, 17),
  6.     -> (10, 24), (10, 1);
  7. Query OK, 9 rows affected (0.06 sec)
  8. Records: 9  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> SELECT * FROM TuTabla;
  11. +------+------+
  12. | mes  | dia  |
  13. +------+------+
  14. |    1 |   25 |
  15. |    1 |    1 |
  16. |   10 |   20 |
  17. |    6 |   30 |
  18. |    1 |   31 |
  19. |    8 |    2 |
  20. |    6 |   17 |
  21. |   10 |   24 |
  22. |   10 |    1 |
  23. +------+------+
  24. 9 rows in set (0.00 sec)
  25.  
  26. mysql> SELECT * FROM TuTabla ORDER BY mes DESC, dia ASC;
  27. +------+------+
  28. | mes  | dia  |
  29. +------+------+
  30. |   10 |    1 |
  31. |   10 |   20 |
  32. |   10 |   24 |
  33. |    8 |    2 |
  34. |    6 |   17 |
  35. |    6 |   30 |
  36. |    1 |    1 |
  37. |    1 |   25 |
  38. |    1 |   31 |
  39. +------+------+
  40. 9 rows in set (0.01 sec)

Ahora bien, si esto no es lo que quieres obtener como salida deberías aclararlo, ya que tal como pones tu pregunta esto es correcto. Tampoco dices de qué tipo de datos son tus columnas, estoy suponiendo que se trata de enteros, pero si los estás manejando por cadenas te recuerdo que estas NO SE ORDENAN IGUAL QUE LOS NÚMEROS, sino que lo hacen de manera alfabética, por lo que tendrías problemas con el 1 y el 10:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE TuTabla (mes VARCHAR(2), dia VARCHAR(2));
  2. Query OK, 0 rows affected (0.14 sec)
  3.  
  4. mysql> INSERT INTO TuTabla VALUES ('1', '25'), ('1', '1'),
  5.     -> ('10', '20'), ('6', '30'), ('1', '31'), ('8', '2'), ('6', '17'),
  6.     -> ('10', '24'), ('10', '1');
  7. Query OK, 9 rows affected (0.09 sec)
  8. Records: 9  Duplicates: 0  Warnings: 0
  9.  
  10. mysql> SELECT * FROM TuTabla;
  11. +------+------+
  12. | mes  | dia  |
  13. +------+------+
  14. | 1    | 25   |
  15. | 1    | 1    |
  16. | 10   | 20   |
  17. | 6    | 30   |
  18. | 1    | 31   |
  19. | 8    | 2    |
  20. | 6    | 17   |
  21. | 10   | 24   |
  22. | 10   | 1    |
  23. +------+------+
  24. 9 rows in set (0.00 sec)
  25.  
  26. mysql> SELECT * FROM TuTabla ORDER BY mes DESC, dia ASC;
  27. +------+------+
  28. | mes  | dia  |
  29. +------+------+
  30. | 8    | 2    |
  31. | 6    | 17   |
  32. | 6    | 30   |
  33. | 10   | 1    |
  34. | 10   | 20   |
  35. | 10   | 24   |
  36. | 1    | 1    |
  37. | 1    | 25   |
  38. | 1    | 31   |
  39. +------+------+
  40. 9 rows in set (0.00 sec)

Y para la próxima, cuando digas que algo de lo que aquí se pone como solución no sirve, tomate 5 minutos para explicar qué es lo que está fallando, sino lo haces es casi imposible tratar de ayudar.

Saludos
Leo.