Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/06/2012, 04:18
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Mysql: agrupar registros y obtener el mayor valor de cada uno

Muestra la estructura de tus tablas y las relaciones entre ellas. Explicanos un poco las reglas del juego en referencia al numero de jugadores por partida (no hace falta que nos expliques el juego en si). Apartir de todo eso podemos orientarte para la query y mas importante sobre el diseño de las tablas....

De entrada 4 columnas no lo veo muy claro, siempre seran 4 jugadores o puede haber partidas con mas o menos jugadores.... Es mucho mas facil obtener el maximo de puntuacion si todos los resultados estan en el mismo campo.....y seguramente es mucho mas eficiente en cuanto a almacenamiento racional de los datos....

Pardidas
idPartida
fecha
...otros campos...

Jugadores
idJugador
Nombre
...

Resultados
idResultado
idPartida
idJugador
puntos


Con esta estructura es posible hacer todo lo que parece que quieres hacer...

Código MySQL:
Ver original
  1. SELECT j.nombre,r.puntos
  2. FROM jugadores j INNER JOIN resultados r ON j.idjugador=r.idjugador
  3. WHERE r.idpartida=X
  4. ORDER BY r.puntos DESC;

El score de la partida X

Resultado maximo

Código MySQL:
Ver original
  1. SELECT p.idpartida,p.fecha,j.nombre,r.puntos
  2. FROM (partidas p INNER JOIN resultados r ON p.idpartida=r.idpartida)
  3.                             INNER JOIN jugadores j ON j.idjugador=r.idjugador
  4. WHERE r.puntos = (SELECT MAX(r2.puntos) FROM resultados r2)

Las diez mejores puntuaciones
(partida, jugador y puntos)

Código MySQL:
Ver original
  1. SELECT p.idpartida,p.fecha,j.nombre,r.puntos
  2. FROM (partidas p INNER JOIN resultados r ON p.idpartida=r.idpartida)
  3.                             INNER JOIN jugadores j ON j.idjugador=r.idjugador
  4. ORDER BY r.puntos DESC
  5. LIMIT 10;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 22/06/2012 a las 05:08