Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/03/2015, 16:26
primary
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: se podria ordenar un consulta segun dos fechas

No yo quiero que me muestre los resultados dependiendo principalmente de la fecha1 si esta es mayor que la fecha actual pero no menor, si cumple esta condicion ordenar los resultados siguientes dependiendo de la fecha2 ordenarlos del la mas reciente a la mas antigua. Esto solo lo consigo hacer con dos consultas y recupando los datos con programacion ya ordenados, pero quiero saber si es mejor o se puede hacer de una sola consulta, no se si importa pero es una tabla con unos 70.000 registros.

Muestro ejemplo:

los registros de la tabla

Código MySQL:
Ver original
  1. mysql> select * from prueba;
  2.  +----+---------------------+---------------------+
  3.  | id | fecha1              | fecha2              |
  4.  +----+---------------------+---------------------+
  5.  |  1 | 2000-00-00 00:00:00 | 2015-03-17 05:20:00 |
  6.  |  2 | 2015-03-31 04:13:00 | 2015-03-01 00:00:00 |
  7.  |  3 | NULL                | 2015-03-23 07:00:00 |
  8.  |  4 | 2015-04-07 00:00:00 | 2014-08-24 00:00:00 |
  9.  +----+---------------------+---------------------+
  10.  4 rows in set (0.00 sec)

las dos consultas que realizo para ordenarlos:

aqui muestro los datos si la fecha 1 es mayor o igual que la fecha actual, estos son los que se tienen que ordenar primero.

Código MySQL:
Ver original
  1. mysql> select * from prueba where fecha1>=current_timestamp();
  2.  +----+---------------------+---------------------+
  3.  | id | fecha1              | fecha2              |
  4.  +----+---------------------+---------------------+
  5.  |  2 | 2015-03-31 04:13:00 | 2015-03-01 00:00:00 |
  6.  |  4 | 2015-04-07 00:00:00 | 2014-08-24 00:00:00 |
  7.  +----+---------------------+---------------------+
  8.  2 rows in set (0.00 sec)

y despues ordeno los de la fecha2 segun exceptuando los de la primera consulta para que no me los repita.

Código MySQL:
Ver original
  1. mysql> select * from prueba where (fecha1<current_timestamp() || fecha1 is null) order by fecha2;
  2. +----+---------------------+---------------------+
  3. | id | fecha1              | fecha2              |
  4. +----+---------------------+---------------------+
  5. |  1 | 2000-00-00 00:00:00 | 2015-03-17 05:20:00 |
  6. |  3 | NULL                | 2015-03-23 07:00:00 |
  7. +----+---------------------+---------------------+
  8. 2 rows in set (0.00 sec)

espero que ahora se entienda un poco mejor, gracias por vuestras respuestas.
saludos

Última edición por primary; 25/03/2015 a las 03:51