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

Ordenar consulta

Estas en el tema de Ordenar consulta en el foro de Mysql en Foros del Web. Hola, Tengo esta consulta que saca los ultimos partidos, pero me lo saca a la inversa... osea el ultimo primero y el primero, ultimo. Si ...
  #1 (permalink)  
Antiguo 03/12/2011, 08:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 37
Antigüedad: 13 años, 2 meses
Puntos: 2
Ordenar consulta

Hola,

Tengo esta consulta que saca los ultimos partidos, pero me lo saca a la inversa... osea el ultimo primero y el primero, ultimo. Si le en ves de DESC utilizo ASC, no me valdría, ya que me muestra los primeros partidos de toda la tabla... osea no respeta "" el limit.

Código:
$partidos = $wpdb->get_results("SELECT equipo_l,equipo_v,resultado_l,resultado_v,fecha FROM partidos WHERE fecha < '".$fecha."' and temporada='".$temporada."' and (equipo_l='".datos_conf('equipo')."' or equipo_v='".datos_conf('equipo')."') ORDER BY fecha DESC limit ".$limit);
Alguna ídea?
  #2 (permalink)  
Antiguo 03/12/2011, 11:30
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Ordenar consulta

Código PHP:
Ver original
  1. $partidos = $wpdb->get_results("(SELECT equipo_l,equipo_v,resultado_l,resultado_v,fecha FROM partidos WHERE fecha < '".$fecha."' and temporada='".$temporada."' and (equipo_l='".datos_conf('equipo')."' or equipo_v='".datos_conf('equipo')."') ORDER BY fecha DESC limit ".$limit." ) ORDER BY fecha ASC");
  #3 (permalink)  
Antiguo 03/12/2011, 20:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ordenar consulta

Dos detalles:
- LIMIT es la última sentencia en aplicarse, pero se hace sobre el resultado como se esté devolviendo (ver manual de referencia).
Cita:
If you use LIMIT row_count with ORDER BY, MySQL ends the sorting as soon as it has found the first row_count rows of the sorted result, rather than sorting the entire result. (...) In either case, once the rows have been found, there is no need to sort any remainder of the result set, and MySQL does not do so
Lo que significa que:
Cita:
Si utiliza row_count LIMIT con ORDER BY, MySQL termina el ordenamiento tan pronto como se ha encontrado la cantidad de filas indicadas en el LIMITde los resultados ordenados, en lugar de ordenar todo el resultado. (...) En cualquier caso, una vez que las filas se han encontrado, no hay necesidad de ordenar cualquier resto del conjunto de resultados, y MySQL no lo hace
En otras palabras, no ordena todo y busca el limite. Odena sólo las filas indicadas devueltas incialmente.

- Estás ordenando por fecha, pero sería buena idea que aclararas si realmente estás usando un campo DATE o DATETIME, porque si usas otra cosa los resultados pueden ser erráticos.

Código MySQL:
Ver original
  1.    SELECT
  2.         equipo_l,
  3.         equipo_v,
  4.         resultado_l,
  5.         resultado_v,
  6.         fecha
  7.     FROM partidos
  8.     WHERE
  9.         fecha < '".$fecha."' AND
  10.         temporada='".$temporada."' AND
  11.         (equipo_l='".datos_conf('equipo')."' OR equipo_v='".datos_conf('equipo')."')
  12.     ORDER BY fecha DESC
  13.     LIMIT".$limit.") T1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select, 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 12:02.