Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ideas para ordenar consulta

Estas en el tema de ideas para ordenar consulta en el foro de Mysql en Foros del Web. Tengo una tabla que tiene una columna que se llama "mes" que contiene el mes en que ocurre un cierto evento... luego necesito hacer una ...
  #1 (permalink)  
Antiguo 12/09/2012, 08:03
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 23 años
Puntos: 1
ideas para ordenar consulta

Tengo una tabla que tiene una columna que se llama "mes" que contiene el mes en que ocurre un cierto evento... luego necesito hacer una consulta, para mostrar en una tabla los "proximos" eventos y necesito mostrar todos los eventos del año, pero mostrando de primero el mas proximo segun la fecha actual, por ejemplo, si estamos en julio, necesito que me muestre primero los que tienen mes 7, luego los de 8, 9, 10 , 11, 12 y luego el 1, 2, 3, 4, 5 y finalmente 6....

si yo hago una consultay pongo un where mes => $mesactual , no vería los registros que aparecen de enero, y meses anteriores al actual, yo necesito verlos todos, pero reordenarlos de manera que me salgan ordenados como explique ...

pense en algun momento hacer dos consultas, pero el problema es que estoy paginando los resultados con php, por lo tanto necesito una sola consulta, para poder paginas los resultados...

alguna idea?
  #2 (permalink)  
Antiguo 12/09/2012, 08:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ideas para ordenar consulta

Si tú buscas por la fecha mayor o igual que la actual (curdate()) y ordenas por el campo fecha, y digo fecha, no mes, de modo ascendente, obtendrás lo que quieres.
  #3 (permalink)  
Antiguo 12/09/2012, 08:41
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
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.
  #4 (permalink)  
Antiguo 12/09/2012, 09:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ideas para ordenar consulta

pienso como leonardo_josue,
pero incluso si ese es el caso (un campo con el mes numérico), habrá otro con el día y uno con el año. Yo preferiría un concat con conversión o casting a DATE y ordenar de acuerdo con ese campo, entre otas razones porque su orden por día dentro de mes sería más preciso.
  #5 (permalink)  
Antiguo 12/09/2012, 21:47
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 23 años
Puntos: 1
Respuesta: ideas para ordenar consulta

voy a probar leonardo_josue, no hay una columna con el dia, ni con el año, no son fechas, solo es un valor numerico que indica el mes en que ocurre un evento, sin especificar , ni dia, ni año, no puedo tratarlo como fecha, voy a digerir la opcion de leonardo_josue a ver si me funciona...
Gracias..

Etiquetas: ideas, php, registros, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:29.