22/06/2012, 04:00
|
|
Mysql: agrupar registros y obtener el mayor valor de cada uno CONTEXTO:
Una página de juegos, la base de datos "partidas" recoge los datos de cada partida, qué juego se jugó, quiénes participaron (jugador1, jugador2, jugador3, jugador4), cómo quedó el ranking (puesto1, puesto2, puesto3, puesto4) y la puntuación que hizo cada uno (puntuacion1 corresponde al puesto1 y así hasta el 4), además de otros datos que no vienen al caso en esta consulta.
PROBLEMA:
Mi objetivo es mostrar a través de una tabla, la mayor puntuación jamás hecha en un juego. Es decir, la tabla debe mostrar:
- Cada juego una única vez
- La mayor puntuación que se ha hecho (comparando entre todos los resultados de los registros puntuacion1, puntuacion2, puntuacion3 y puntuacion4)
- Quién hizo esa puntuación (si la mayor puntuacion corresponde a la columna "puntuación1" se debe recoger el valor de la columna puesto1 y así sucesivamente).
SITUACIÓN ACTÚAL:
Puedo hacer cuatro consultas y comparar los resultados para obtener la mayor puntuación pero creo que es el método menos eficiente.
Actualmente he agrupado los resultados por juego, lo que hace que cada juego aparezca solo una vez, pero de ahí no paso. Tengo entendido que se puede combinar GROUP BY y ORDER BY pero no he conseguido hacerlo correctamente.
Estoy a tiempo de realizar cambios en la base de datos para optimizarla, así que cualquier consejo será bien recibido.
Gracias!
Gonzalo. |