Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/03/2009, 09:54
rafaelincl68
 
Fecha de Ingreso: diciembre-2008
Mensajes: 81
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Resultado muy raro en consulta

Cita:
Iniciado por jurena Ver Mensaje
Sí, con el group by sólo puedes traerte en la primera consulta el valor del MAX() y el campo por el que agrupas. Si quieres recupararlo todo, tienes que hacerlo así:


select e.id_ensayo, t1.niv, t1.maximo from ensayos e INNER JOIN (select nivel niv, max(aciertos) maximo from ensayos group by nivel)t1 ON e.nivel = t1.niv AND e.aciertos = t1.maximo ORDER BY e.id_ensayo, t1.maximo

Si dos id_ensayo pertenecientes al mismo nivel pudieran tener el mismo número de aciertos y fuera el máximo, te sacaría los dos (o los que fueran). No lo he probado.
Gracias compañero, lo acabo de probar y ahora si sale el resultado correcto. La unica pega que tengo es que como bien dices, cuando dos niveles con el mismo id_ensayo tienen el mismo numero de aciertos, pues muestra los dos resultados.

Para deshacer este empate, tengo otro campo en la tabla, llamado TIEMPO, el cual a igualdad de aciertos en un mismo nivel con el mismo id_ensayo, entonces el minimo tiempo es el que se deberia mostrar.

He estado intentando ampliar la consulta para obtener resultados unicos, aplicando el tiempo como te comento, pero tampoco he conseguido hacerlo, pues imagino que sera anidar otro INNER JOIN, con otro group by para pillar el minimo tiempo de los maximos.

Si puedes orientarme un poco sobre esto, pues lo agradeceria, pues el tema de los INNER JOIN no lo domino demasiado.

Saludos y gracias.

Rafalin.