MySQL - Se me quemó el balero. Como hacer un ranking???

 
Vista:

Se me quemó el balero. Como hacer un ranking???

Publicado por RataASP (2 intervenciones) el 13/03/2008 23:15:16
Hola:


Estoy intentando resolver un ranking que muestre una lista de jugadores que intervienen en un torneo de varias etapas, en las cuales obtienen puntos y éstos a su vez sumados conforman un total general que es que define el orden en el ranking. La base de datos de la cual parto es la siguiente (la cantidad de jugadores y etapas varian en forma dinámica):


+-----------+------------+----------+---------+

| idranking | idjugador | idetapa | puntos |

+-----------+------------+----------+---------+

| 1 | A | 1 | 6 |

+-----------+------------+----------+---------+

| 2 | B | 1 | 8 |

+-----------+------------+----------+---------+

| 3 | C | 1 | 10 |

+-----------+------------+----------+---------+

| 4 | A | 2 | 10 |

+-----------+------------+----------+---------+

| 5 | B | 2 | 6 |

+-----------+------------+----------+---------+

| 6 | C | 2 | 8 |

+-----------+------------+----------+---------+

| 7 | A | 3 | 8 |

+-----------+------------+----------+---------+

| 8 | B | 3 | 6 |

+-----------+------------+----------+---------+

| 9 | C | 3 | 10 |

+-----------+------------+----------+---------+


La tabla que pretendo mostrar en la página con esta info es la siguiente:


+----------+----------+----------+---------+--------+

| Jugador | Etapa 1 | Etapa 2 | Etapa 3 | Total |

+----------+----------+----------+---------+--------+

| C | 10 | 8 | 10 | 28 |

+----------+----------+----------+---------+--------+

| A | 6 | 10 | 8 | 24 |

+----------+----------+----------+---------+--------+

| B | 8 | 6 | 6 | 20 |

+----------+----------+----------+---------+--------+


En base a la estructura de la base de datos, pensaba en una instrucción SELECT de estas características:


"SELECT idjugador, idetapa, SUM(puntos) AS subtotal FROM ranking GROUP BY idjugador WITH ROLLUP"


Pero esta instrucción me devuelve una tabla de este tipo:


+------------+---------+---------+

| idjugador | idetapa | puntos |

+------------+---------+---------+

| A | 1 | 10 |

+------------+---------+---------+

| A | 2 | 10 |

+------------+---------+---------+

| A | 3 | 8 |

+------------+---------+---------+

| Null | Null | 28 |

+------------+---------+---------+

| B | 1 | 8 |

+------------+---------+---------+

| B | 2 | 6 |

+------------+---------+---------+

| B | 3 | 6 |

+------------+---------+---------+

| Null | Null | 20 |

+------------+---------+---------+

| C | 1 | 6 |

+------------+---------+---------+

| C | 2 | 8 |

+------------+---------+---------+

| C | 3 | 10 |

+------------+---------+---------+

| Null | Null | 24 |

+------------+---------+---------+


El tema es que no puedo ordenar esta info de modo de ir dibujándola en la página. Como estos resultados dejarían al jugdor C en primer lugar, luego al A y por último al B, hasta donde yo lo entiendo, lo que necesito es que la tabla me quede ordenada de la siguiente forma:


+------------+---------+---------+

| idjugador | idetapa | puntos |

+------------+---------+---------+

| C | 1 | 10 |

+------------+---------+---------+

| C | 2 | 8 |

+------------+---------+---------+

| C | 3 | 10 |

+------------+---------+---------+

| Null | Null | 28 |

+------------+---------+---------+

| A | 1 | 6 |

+------------+---------+---------+

| A | 2 | 10 |

+------------+---------+---------+

| A | 3 | 8 |

+------------+---------+---------+

| Null | Null | 24 |

+------------+---------+---------+

| B | 1 | 8 |

+------------+---------+---------+

| B | 2 | 6 |

+------------+---------+---------+

| B | 3 | 6 |

+------------+---------+---------+

| Null | Null | 20 |

+------------+---------+---------+


Estuve buscando en la web algún ejemplo que resuelva algo por el estilo pero no encontré nada.


Podría alguien darme una mano con este tema. La verdad no se como resolverlo.


Muchas Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder