Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: DarkMatrix en 12 Enero 2010, 18:23 pm



Título: Calcular la Posicion de un usuario?
Publicado por: DarkMatrix en 12 Enero 2010, 18:23 pm
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
  1. Private Function Obtener_Posicion()
  2.  
  3.    MiRecordset.Open "SELECT * FROM Users ORDER BY Experience DESC", MiConexion, adOpenDynamic, adLockOptimistic
  4.  
  5.    MiRecordset.MoveFirst
  6.    MiRecordset.Find "Username = 'Usuario 7266'"
  7.  
  8.    If (MiRecordset.BOF = True) Or (MiRecordset.EOF = True) Then
  9.        MsgBox "Usuario no encontrado"
  10.        MiRecordset.Close
  11.        Exit Function
  12.    End If
  13.  
  14.    MsgBox MiRecordset.AbsolutePosition
  15.    MsgBox MiRecordset.Fields("Experience")
  16.  
  17.    MiRecordset.Close
  18.  
  19. End Function


Título: Re: Calcular la Posicion de un usuario?
Publicado por: Shell Root en 12 Enero 2010, 18:28 pm
Seleccionar el Usuario con Mayor Experiencia?
En SQL existe la funcion MAX(). vease (http://msdn.microsoft.com/es-es/library/ms187751.aspx)


Título: Re: Calcular la Posicion de un usuario?
Publicado por: DarkMatrix en 12 Enero 2010, 18:32 pm
No, no quiero el que tenga mas experiencia, quiero obtener la posicion del usuario segun su experiencia, asi como en el ejemplo que hize.


Título: Re: Calcular la Posicion de un usuario?
Publicado por: Sk9ITk5Z en 13 Enero 2010, 00:08 am
Citar
quiero obtener la posicion del usuario segun su experiencia

osea algo como un select posicion where experiencia = algo????


Título: Re: Calcular la Posicion de un usuario?
Publicado por: raul338 en 13 Enero 2010, 00:48 am
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
  1. SELECT COUNT(*) FROM Users WHERE Experiencia < (ExperienciaUsuario) ORDER BY Experiencia
  2.  

En experienciaUsuario podes hacer otro select
Código
  1. SELECT COUNT(*) FROM Users WHERE Experiencia < (SELECT Experiencia FROM Users WHERE Id = 2) ORDER BY Experiencia
  2.  

Espero que te sirva!