Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/07/2012, 11:04
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: SELECT para contar partidos ganados

Hola yosoloyo:

Si bien el compañero quimfv ya te dio la respuesta, me hubiera gustado más que la hubieras sacado por tu propia cuenta... así podrías tomarla como experiencia para futuros desarrollos...

Creo que la consulta de quimfv podría quedar más sencilla, checa este script, debería regresar el mismo resultado, pero sin necesidad de anidar tantas subconsultas.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM puntuacion;
  2. +--------------+-----------+-------------+---------+---------------+
  3. | idpuntuacion | idusuario | idtemporada | jornada | puntosjornada |
  4. +--------------+-----------+-------------+---------+---------------+
  5. |            1 |         1 |           1 |       1 |            25 |
  6. |            2 |         2 |           1 |       1 |            45 |
  7. |            3 |         3 |           1 |       1 |            20 |
  8. |            4 |         4 |           1 |       1 |            15 |
  9. |            5 |         1 |           1 |       2 |            20 |
  10. |            6 |         2 |           1 |       2 |            20 |
  11. |            7 |         3 |           1 |       2 |            55 |
  12. |            8 |         4 |           1 |       2 |            10 |
  13. +--------------+-----------+-------------+---------+---------------+
  14. 8 rows in set (0.00 sec)
  15.  
  16. mysql> SELECT
  17.     ->   P.idtemporada,
  18.     ->   P.idusuario,
  19.     ->   IFNULL(T.victorias, 0) victorias,
  20.     ->   SUM(P.puntosjornada) puntos
  21.     -> FROM puntuacion P
  22.     -> LEFT JOIN
  23.     -> (SELECT COUNT(PP.idusuario) victorias, PP.idusuario
  24.     ->  FROM puntuacion PP
  25.     ->  INNER JOIN
  26.     ->   (SELECT MAX(puntosjornada) puntosjornada, jornada, idtemporada
  27.     ->    FROM puntuacion
  28.     ->    GROUP BY idtemporada, jornada) V
  29.     ->    WHERE
  30.     ->      V.idTemporada = PP.idTemporada AND
  31.     ->      V.jornada = PP.jornada AND
  32.     ->      V.puntosjornada = PP.puntosjornada
  33.     -> GROUP BY PP.idUsuario, PP.idTemporada
  34.     -> ) T ON T.idusuario = P.idusuario
  35.     -> GROUP BY P.idUsuario, idTemporada
  36.     -> ORDER BY victorias DESC, puntos DESC;
  37. +-------------+-----------+-----------+--------+
  38. | idtemporada | idusuario | victorias | puntos |
  39. +-------------+-----------+-----------+--------+
  40. |           1 |         3 |         1 |     75 |
  41. |           1 |         2 |         1 |     65 |
  42. |           1 |         1 |         0 |     45 |
  43. |           1 |         4 |         0 |     25 |
  44. +-------------+-----------+-----------+--------+
  45. 4 rows in set (0.00 sec)

Confío en que después de analizar la consulta comprendas la idea de lo que estamos haciendo, pero si tienes alguna duda nos la comentas para tratar de explicar mejor. Saludos

Saludos
Leo.