Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/04/2011, 06:33
Avatar de gnzsoloyo
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: Consulta complicada SQL (para mi)

Cuando usas MAX() lo que hace es buscar el mayor de los valores de toda la tabla. Te devolverá siempre un sólo registro, a menos que haya un agrupamiento, caso en el cual devolverá el mayor de cada grupo. Por eso tu consulta devuelve siempre 12.
LIMIT opera si y sólo si la consulta devuelve más de un registro que cumpla con la condición, pero como en este caso eso es un sólo registro...

El error consiste en suponer que LIMIT opera antes que MAX(). No es así. Para cuando se ejecuta el LIMIT, la verificación de condiciones ya se realizó.

Para que realice lo que necesitas lo primero que hay que hacer es obtener el grupo completo de registros a evaluar, cosa que se tiene que hacer con una subconsulta. Esa subconsulta genera una tabla derivada (en memoria, obtenida por consulta) de sólo 5 registros y es a esos registros a los que s eaplica el MAX().

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)