Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/09/2012, 08:41
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 1 mes
Puntos: 447
Respuesta: ideas para ordenar consulta

Hola arlin:

Si entendí correctamente, el campo mes es de tipo NUMERICO, por lo tanto, la solución que propone jurena no funcionaría, pues para que funcione, este campo debería ser tipo fecha. Se me ocurre que hagas un ORDER BY condicional, más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+
  3. | mes  |
  4. +------+
  5. |    1 |
  6. |    9 |
  7. |    7 |
  8. |    5 |
  9. |   10 |
  10. |    6 |
  11. |    3 |
  12. |    2 |
  13. |    8 |
  14. |    4 |
  15. |   12 |
  16. |   11 |
  17. +------+
  18. 12 rows in set (0.00 sec)
  19.  
  20. mysql> SET @mes = 6;
  21. Query OK, 0 rows affected (0.01 sec)
  22.  
  23. mysql> SELECT * FROM tabla
  24.     -> ORDER BY
  25.     -> IF (mes BETWEEN @mes AND 12, 1, 2), mes;
  26. +------+
  27. | mes  |
  28. +------+
  29. |    6 |
  30. |    7 |
  31. |    8 |
  32. |    9 |
  33. |   10 |
  34. |   11 |
  35. |   12 |
  36. |    1 |
  37. |    2 |
  38. |    3 |
  39. |    4 |
  40. |    5 |
  41. +------+
  42. 12 rows in set (0.03 sec)

Unicamente tendrías que sustituir el parámetro @mes por tu variable $mesactual.

Sin embargo, creo que valdría hacer el comentario que no es recomendable utilizar campos numéricos cuando se trata de valores tipo fecha (independientemente de que manejes sólo el mes)... Siempre que tengas necesidad de manejar algún atributo que tenga que ver con temporalidad (dia, mes, año, hora, minutos, etc) DEBES UTILIZAR CAMPOS TIPO HORA y/o FECHA. MySQL tiene funciones para maneja sólo la parte de la fecha que tú necesitas, pero al utilizar campos numéricos (como es el caso) tienes que cuidad por programación que los valores que se introduzcan a la tabla sólo sean del 1 al 12... en realidad podrías poner cualquier valor numérico, lo que puede producir errores en la información.

Saludos
Leo.