Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/04/2012, 08:39
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Elegir el mayor entre varios campos de una misma fila

Hola liranan:

En primer lugar habría que comentar que creo que tu modelo de BD no es el adecuado. Lo correcto hubiera sido un modelo con tres tablas:

1. Jugadores
2. Partidas
3. Jugadores por partida

De esta manera la consulta que planteas hubiera sido muy sencilla, sin embargo con la tabla como la tienes no es tan trivial como podrías suponer.

Para obtener los puntos de un jugador en específico, tendrías que sumar aquellos donde aparezca el jugador como jugador 1 más aquellos donde aparezca como jugador 2 más aquellos donde aparezca como jugador 3. Esto puedes hacerlo de varias maneras, una sería con UNION's:

Código MySQL:
Ver original
  1. select sum(puntos) total from
  2. (
  3. Select puntuacion1 puntos from tabla where jugador1 = 'pepe'
  4. Select puntuacion2 puntos from tabla where jugador2 = 'pepe'
  5. Select puntuacion3 puntos from tabla where jugador3 = 'pepe'
  6. ) T

Otra opción sería con tres subconsultas en el select:

Código MySQL:
Ver original
  1. (select sum(puntuacion1) from tabla where jugador1 = 'pepe') +
  2. (select sum(puntuacion2) from tabla where jugador2 = 'pepe') +
  3. (select sum(puntuacion3) from tabla where jugador3 = 'pepe')

Obviamente que tendrías que considerar a todos los jugadores, en el ejemplo sólo considero a 'pepe'. una vez haciendo esto podrías utilizar la función max para traer el de máxima puntuacíon o podrías ordenar por el total de puntos y traer sólo el primero (aunque tendrías problemas si existe un empate en primer lugar, pues te arrojaría sólo un registro).

Si tienes oportunidad cambia tu modelo de datos. Si no puedes cambiar el modelo de datos, intenta hacer la consulta con lo que te pongo de ejemplo y si continuas con problemas postea algo de lo que intentaste hacer y con gusto te ayudamos a afinar la consulta.

Saludos
Leo.