Foros del Web » Programando para Internet » ASP Clásico »

Posición de Lugares (Top)

Estas en el tema de Posición de Lugares (Top) en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo una pequeña duda: Tengo una tabla dentro de una base de datos SQL SERVER, ahi guardo los registros de los perfiles ...
  #1 (permalink)  
Antiguo 05/01/2007, 08:15
 
Fecha de Ingreso: julio-2005
Mensajes: 27
Antigüedad: 18 años, 11 meses
Puntos: 0
Posición de Lugares (Top)

Hola a todos, tengo una pequeña duda:

Tengo una tabla dentro de una base de datos SQL SERVER, ahi guardo los registros de los perfiles de mis registrados, cada vez que alguien checa el perfil de algun otro Usuario se suma 1 (+1) al campo "Visitas".

Cuando muestro el top 10 me muestra los 10 más visitados. (Hasta aquí todo bien), solo que deseo que cada usuario sepa su posición actual dentro del top, es decir, saber en que posción de todos los visitantes se encuentra mi perfil, no necesariamente los 10 primeros, si no en general, por ejemplo si mi perfil tiene 2,300 visitas, quiero saber en que lugar estoy contra todos los que estan en la base de datos.

Gracias.
  #2 (permalink)  
Antiguo 05/01/2007, 08:41
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Posición de Lugares (Top)

Lo que necesitas es un repositorio llamese tabla, vista, matriz, etc donde tengas los usuarios ordenados de manera descendente segùn el nùmero de visitas y un contador de registros que podrìa ser una columna identity para el caso que sea una tabla o una vista...
si fuese un arreglo podrìas hacerlo con un contador.
  #3 (permalink)  
Antiguo 05/01/2007, 12:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Posición de Lugares (Top)

Un poco más explícito, ya que está usando SQL, yo haría lo siguiente:

Código:
--Crea una tabla temporal donde almacenes el id de tu usuario y un campo de autoincremento que te dara el orden
CREATE TABLE #tbl_filas(
id_orden INT IDENTITY (1,1),
usuario_id INT NOT NULL
);

--Haz un Insert de usuarios en la tabla temporal 
INSERT INTO #tbl_filas(usuario_id)
SELECT usuario_id FROM tbl_usuario ORDER BY usuario_posicion;

--Finalmente obtenemos nuestro(s) usuario(s), si se sabe el id del usuario en cuestion solo traemos ese registro, si no, podemos devolver todo e iterar un recordset
SELECT a.*, b.id_orden FROM tbl_usuario a INNER JOIN #tbl_filas b ON a.usuario_id = b.usuario_id [WHERE usuario_id=@variable_usuario_id] [ORDER BY id_orden]

--Destruye tu tabla temporal
DROP TABLE #tbl_filas
Podrias crearte un stored procedure con esto, tambien puedes llamarlo desde tu codigo duro, como cualquier sentencia SQL.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 05/01/2007, 18:46
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Posición de Lugares (Top)

¿ Qué no es algo tan simple como ordenar por el campo de visitas y la posición es el número de registro ?
  #5 (permalink)  
Antiguo 05/01/2007, 18:52
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Posición de Lugares (Top)

Si, si quieres regresar todo el recordset e iterarlo eso puedes hacer, yo lo propuse así para dejar la carga dentro del SQL porque no solo de recordsets vive el hombre no?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 07/01/2007, 08:13
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Posición de Lugares (Top)

mmmmmmm, bueno, si, efectivamente, pero usar un Seek y luego consultar el AbsolutePosition, no es precisamente iterar el recordSet, ¿verdad? , digo, si las propiedades y métodos del ADO ya lo hacen, para qué reinventas la rueda

Pero es bien, si tienes chorrocientos mil registros, no vale regresarlos todos para consultar una sola posición
  #7 (permalink)  
Antiguo 07/01/2007, 11:37
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Posición de Lugares (Top)

Bueno, eso de que no lo estás iterando no lo podemos decir tan abiertamente que no? Tendríamos que ver el funcionamiento interno del método seek, y aunque efectivamente no lo iteraras y el rendimiento fuera bueno, cosa que dudo :D, de todas maneras estarías trayendo un recordset inncesariamente -desde mi muy particular punto de vista, la idea de usar T-SQL, es que podrías meter ese código en una función por ejemplo y usarla como parte de cualquier otro query, vaya, para eso es que existe T-SQL que no?

No es que se trate de re-inventar la rueda, es simplemente otra alternativa más(mejor? :D) a un problema específico

Saludos my friend
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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




La zona horaria es GMT -6. Ahora son las 21:22.