Ver Mensaje Individual
  #13 (permalink)  
Antiguo 30/01/2008, 14:41
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Posicion de un Registro

La verdad, el tema es interesante. Aunque creo que es un caso más para el foro de bases de datos.

La manera cómo está planteada la solución se va tornando menos óptima si:
- La cantidad total de registros es alta.
- El registro particular que buscamos está más cerca del último lugar.

Pero el problema no parece estar aterrizado en un caso concreto, así que voy a utilizar lo propuesto por McBlink
Cita:
Iniciado por McBlink
es muy comun saber en que posicion esta un registro, por ejemplo para sacar en que posicion de un ranking esta X usuario.
Entonces, supongamos que tenemos esta tabla:
Código:
tabla: usuarios
------------------------
id	nombre	puntos
------------------------
1	juan	400
2	carola	100
3	lucas	200
4	pedro	500
5	paula	300
------------------------
...y queremos saber en qué posición del ránking está "lucas"(id = 3).

Una manera de resolver el problema pude ser dividirlo en dos consultas:
- Una que nos diga el puntaje del usuario "lucas" (o id=3).
- Otra que nos diga cuántos registros hay con más de ése puntaje.

Código PHP:
$id_usuario_buscado 3;

$sql_puntaje_usuario "SELECT puntos FROM usuarios WHERE id = $id_usuario_buscado";
$resultset_puntaje mysql_query($sql_puntaje_usuario);
$puntaje_usuario_buscado mysql_result($resultset_puntaje0);

$sql_posicion_usuario "SELECT COUNT(id) AS posicion WHERE puntos > $puntaje_usuario_buscado";
$resultset_posicion mysql_query($sql_posicion_usuario);
$posicion_usuario_buscado mysql_result($resultset_puntaje0); 
Es una manera muchísimo más eficiente de hacer lo que plantean.

No sé si pueda haber otra mejor provista por el motor de mysql directamente. Podrían preguntar en el foro de Bases de datos.

Un abrazo