Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: MauroMasciar en 26 Agosto 2016, 18:39



Título: Tomar los 10 mas altos (SQL)
Publicado por: MauroMasciar en 26 Agosto 2016, 18:39
Buenas.
Quería pedir ayuda con esto, ya he investigado y hecho varias consultas pero no me ha salido. Es un proyecto personal que tengo, un juego.

Resulta que cada vez que un jugador obtiene puntos, guarda en una base de datos, el nombre de jugador y los puntos que hizo. Yo necesito tomar los 10 jugadores con su puntaje mas alto, pero sin repetir el jugador.

Esta seria la tabla en cuestión:
(https://dl.dropboxusercontent.com/u/41207204/imagenesposteadas/puntos.png)

Como ven guarda cada puntaje, y quiero crear un top 10 sobre los que hicieron mas puntos.
Hasta ahora lo que me salió es esto, pero no toma los puntajes mas altos

Código
  1. SELECT `Nombre`, `Puntos` FROM `drift` GROUP BY `Nombre` ORDER BY `Puntos` DESC LIMIT 0 , 10

(https://dl.dropboxusercontent.com/u/41207204/imagenesposteadas/puntos2.png)

Gracias.


Título: Re: Tomar los 10 mas altos (SQL)
Publicado por: [u]nsigned en 27 Agosto 2016, 01:20
Por lo que veo un mismo jugador puede tener varios puntos repartidos en varios registros? En ese caso tenes que usar SUM para sumar todos los puntos de cada jugador, sino solo te taera el puntaje mas alto de entre todos los registro de ese jugador, me explico?

No tengo un MySQL a mano, pero deberia ser algoa si:

Código
  1. SELECT `Nombre`, SUM(`Puntos`) AS puntos_total FROM `drift` GROUP BY `Nombre` ORDER BY SUM(`Puntos`) DESC LIMIT 0 , 10






Título: Re: Tomar los 10 mas altos (SQL)
Publicado por: MauroMasciar en 27 Agosto 2016, 23:52
Solucionado. No con eso pero ya.
Gracias.