id | usuario | puntos
la ordeno tipo select * from tabla order by puntos desc
y quiero k al indicarle un usuario m devuelva la fila en la que esta, osea el puesto del ranking... se puede hacer de alguna manera?' un saludo
|
|
#1 (permalink) |
![]() Fecha de Ingreso: noviembre-2007
Mensajes: 199
|
Obtener fila en mysql
id | usuario | puntos la ordeno tipo select * from tabla order by puntos desc y quiero k al indicarle un usuario m devuelva la fila en la que esta, osea el puesto del ranking... se puede hacer de alguna manera?' un saludo |
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 813
|
Respuesta: Obtener fila en mysql
Son cosas que se hacen mejor con programación, pero si te empeñas en hacerlo con MySQL.
select * from (select a.equipo, a.puntuacion, (select 1 + count(*)from nombretabla b where b.puntuacion > a.puntuacion) RANK from nombretabla as a) as x order by x.RANK La idea está sacada de: http://www.onlamp.com/pub/a/mysql/20...ql.html?page=4 En caso de empate, numera los dos con el mismo número, pero el siguiente salta. Si hay empate en la tercera posición, aparecen 3 y 3, pero el siguiente aparece como 5. Explicación: comparas los datos de la tabla primera con los de la segunda, que son la misma tabla; si el b.puntuacion es el mayor de todos los de la tabla b, el resultado de la comparación con el a.puntuacion mayor de la tabla a, da un count(*) = 0, al que, tras sumarle 1, da 1, y lo coloca en la primera posición; el segundo daría un count de 1, +1=2; y así sucesivamente con los demás. Última edición por jurena; 24-jun-2008 a las 07:53. |
|
|
|