Foros del Web » Programando para Internet » PHP »

Saber en que posicion del sql esta tal persona ..

Estas en el tema de Saber en que posicion del sql esta tal persona .. en el foro de PHP en Foros del Web. Os cuento mi problema. Necesito saber el ranking de una persona, por ejemplo. Hay 10 personas : Posición 1 : persona a Posición 2 : ...
  #1 (permalink)  
Antiguo 08/10/2008, 15:22
 
Fecha de Ingreso: octubre-2005
Mensajes: 132
Antigüedad: 18 años, 6 meses
Puntos: 1
Saber en que posicion del sql esta tal persona ..

Os cuento mi problema.

Necesito saber el ranking de una persona, por ejemplo.

Hay 10 personas :

Posición 1 : persona a
Posición 2 : persona b
Posición 3 : persona c
...
...
..
Posición 10 : persona h

Necesito saber sin tener que hacer todo el bucle en que posicion esta la persona c.

Yo ahora hago esto :

select * from players order by puntos.

¿Como podria hacerlo?, por que no veo como se hace ni por sql ni por php si no es recorriendo todo el bucle y ver cuando me llega :(
__________________
------------------------------------------------------------------
Vente a jugar al ajedrez :
Jugar ajedrez online
  #2 (permalink)  
Antiguo 08/10/2008, 15:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Saber en que posicion del sql esta tal persona ..

Hola chelejuan4,

Lo ideal para hacer lo que propones es que guardes el ranking en la BDD, y con eso puedes saber la posicion, y tener un método o un script que actualize el ranking cada X tiempo.

Saludos.
  #3 (permalink)  
Antiguo 09/10/2008, 01:53
 
Fecha de Ingreso: octubre-2005
Mensajes: 132
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Saber en que posicion del sql esta tal persona ..

Pupupu eso es lo que habia pensado pero es un poco rollo no ?? ya que si son 10 personas no pasa nada, pero si son 1300 como son ahora es un proceso algo largo, pero es que si son muchas mas como 10.000 el proceso puede ser demasiado doloroso.

¿Alguna idea de como hacerlo? es que no veo claro hacerlo asi :(
__________________
------------------------------------------------------------------
Vente a jugar al ajedrez :
Jugar ajedrez online
  #4 (permalink)  
Antiguo 09/10/2008, 02:10
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Saber en que posicion del sql esta tal persona ..

¿POr que la persona h esta en la posicion 10? Porque hay 9 que tienen una puntuacion mayor que la suya.

SELECT count(*) FROM players WHERE puntos>puntos_persona

A esta consulta le pasas en puntos_persona los puntos de la persona de la que quieres saber la posicion. A lo que devuelve la consulta le sumas 1.

En caso de empate a puntos aparecen con la misma posicion, y la siguiente persona con menos puntos con la posicion que ocuparia si los empatados no estarian empatados. Por ejemplo, la persona h y la i tienen 10 puntos y estan situados en la posicion 11, la persona j tiene 9 puntos y esta en la posicion 13.

Si quieres que cada empatado tenga una posicion unica, debes usar un criterio de desempate (orden alfabetico, mejor resultado en casa, mayor diferencia de goles) y crear una consulta que cuente las personas con la misma puntuacion pero mejores en el criterio de desempate, para luego añadirla a la consulta anterior.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:58.