Calcular la Posicion de un usuario?

Iniciado por DarkMatrix, 12 Enero 2010, 18:23 PM

0 Miembros y 1 Visitante están viendo este tema.

DarkMatrix

Bueno mi inquietud es la de como obtener el rank (Posicion) de un usuario dentro de una determianada jerarquia, sabiendo que los datos estan en una base de datos access. Ejemplo: En la base de datos hay 10.000 usuarios cada uno con una determinada experiencia, quiero obtener la posicion del Usuario 3 ordenando de mayor a menor sin tener que hacer un "SELECT * FROM Users ORDER BY Experiencia" y tener que recorrer cada registro para obtener el indece del registro -.-

Usuario:              Experiencia:
Usuario 1            500
Usuario 2            358
Usuario 3            589
Usuario 4            955
Usuario 5            1254
Usuario 6            2121
Usuario 7            85
Usuario 8            159

"SELECT * FROM Users ORDER BY Experiencia DESC":

Usuario:              Experiencia:
Usuario 6            2121
Usuario 5            1254
Usuario 4            955
Usuario 3            589
Usuario 1            500
Usuario 2            358
Usuario 8            159
Usuario 7            85

Usuario 3 Posicion: 4

Actualmente lo hago de esta manera, pero hay que pedir todos los registros a la base de datos y quiera saber si hay otra forma:

Código (vb) [Seleccionar]
Private Function Obtener_Posicion()

   MiRecordset.Open "SELECT * FROM Users ORDER BY Experience DESC", MiConexion, adOpenDynamic, adLockOptimistic

   MiRecordset.MoveFirst
   MiRecordset.Find "Username = 'Usuario 7266'"

   If (MiRecordset.BOF = True) Or (MiRecordset.EOF = True) Then
       MsgBox "Usuario no encontrado"
       MiRecordset.Close
       Exit Function
   End If
   
   MsgBox MiRecordset.AbsolutePosition
   MsgBox MiRecordset.Fields("Experience")

   MiRecordset.Close

End Function

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

Shell Root

Seleccionar el Usuario con Mayor Experiencia?
En SQL existe la funcion MAX(). vease (http://msdn.microsoft.com/es-es/library/ms187751.aspx)
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

DarkMatrix

No, no quiero el que tenga mas experiencia, quiero obtener la posicion del usuario segun su experiencia, asi como en el ejemplo que hize.

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

Sk9ITk5Z

Citarquiero obtener la posicion del usuario segun su experiencia

osea algo como un select posicion where experiencia = algo????
Este es un pueblo de corazón extraviado, no quiere conocer mis caminos por eso no entraran en mi descanso.

raul338

no, el lo que quiere es que le devuelvan el numero de la fila en la que se encuentra tal usuario, lo que recomendaria es hacer un Count de los usuarios que estan antes de el, no te armo la consulta porque seguro ni funcionaria (hace mucho que no toco SQL :xD)

Código (sql) [Seleccionar]

SELECT COUNT(*) FROM Users WHERE Experiencia < (ExperienciaUsuario) ORDER BY Experiencia


En experienciaUsuario podes hacer otro select
Código (sql) [Seleccionar]

SELECT COUNT(*) FROM Users WHERE Experiencia < (SELECT Experiencia FROM Users WHERE Id = 2) ORDER BY Experiencia


Espero que te sirva!