Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Obtener fila en mysql (http://www.forosdelweb.com/f21/obtener-fila-mysql-599492/)

layker 24/06/2008 04:14

Obtener fila en mysql
 
Hola tengo una tabla para un ranking tipo

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

quimfv 24/06/2008 05:14

Respuesta: Obtener fila en mysql
 
No se como resolver los empates pero....


Código:

select count(*) as ranking form tabla
          where puntos>=(Select puntos form tabla where nombre='m')

Sirve?

Quim

jurena 24/06/2008 05:31

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.

No es recomendable si se trata de muchos datos, pues el self-join ofrece un rendimiento bajo. Lo mejor: hacerlo con programación...

seyko 24/06/2008 09:07

Respuesta: Obtener fila en mysql
 
muy interesante jurena, gracias por el aporte!

layker, parece que es algo que vas a utilizar mucho, puedes crear una vista y lanzar las consultas contra ella.

Salu2


La zona horaria es GMT -6. Ahora son las 08:52.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.