Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Obtener posición de un registro en los resultados de una búsqueda

Estas en el tema de Obtener posición de un registro en los resultados de una búsqueda en el foro de Mysql en Foros del Web. Veamos, estoy desarrollando una aplicación web, para la cual necesito mostrar una lista paginada de resultados, y el detalle del registro seleccionado. Para ello tengo ...
  #1 (permalink)  
Antiguo 06/05/2011, 03:54
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Obtener posición de un registro en los resultados de una búsqueda

Veamos, estoy desarrollando una aplicación web, para la cual necesito mostrar una lista paginada de resultados, y el detalle del registro seleccionado.
Para ello tengo una SQL limitada al nº de registros que quiero mostrar por página, ordenada por parámetros arbitrarios:
Código MySQL:
Ver original
  1. SELECT id, nombre, país, provincia FROM empresas ORDER BY parametro1, prametro2 LIMIT(registro_inicial, registro_por_pagina)
Por otro lado tengo el registro que deseo mostrar:
Código MySQL:
Ver original
  1. SELECT * FROM empresas WHERE id=registro_seleccionado

Necesito calcular, en qué posición de la lista de la búsqueda anterior (de acuerdo a los parámetros introducidos por el usuario para ordenar los resultados) se halla el registro seleccionado, para poder determinar qué página debo mostrar y resaltar dicho registro.

Y todo ello con la menor cantidad de peticiones SQL posibles
Tampoco me sirve hacer la select del listado completo e ir recorriendo los registros uno a uno hasta dar con el indicado llevando un contador, porque en esa tabla puede haber miles de registros, y la razón de que estemos paginándola es para agilizar la consulta.

Gracias de antemano con toda las sugerencias que me podáis ofrecer
  #2 (permalink)  
Antiguo 13/05/2011, 16:25
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: Obtener posición de un registro en los resultados de una búsqueda

Yo ando buscando lo mismo, fíjate que aquí:

http://www.forosdelweb.com/f18/posic...gistro-552883/

A la mitad del post lo resuelve haciendo dos querys a la base:

Código PHP:
Ver original
  1. id_usuario_buscado = 3;
  2.  
  3. $sql_puntaje_usuario = "SELECT puntos FROM usuarios WHERE id = $id_usuario_buscado";
  4. $resultset_puntaje = mysql_query($sql_puntaje_usuario);
  5. $puntaje_usuario_buscado = mysql_result($resultset_puntaje, 0);
  6.  
  7. $sql_posicion_usuario = "SELECT COUNT(id) AS posicion WHERE puntos > $puntaje_usuario_buscado";
  8. $resultset_posicion = mysql_query($sql_posicion_usuario);
  9. $posicion_usuario_buscado = mysql_result($resultset_puntaje, 0);
  #3 (permalink)  
Antiguo 13/05/2011, 16:36
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: Obtener posición de un registro en los resultados de una búsqueda

Encontré otra opción que te puede servir:

Si los ids están ordenados, para saber la posición del registro registro_seleccionado

Código SQL:
Ver original
  1. SELECT COUNT(*) FROM empresas WHERE id_jugador < registro_seleccionado
Te dice cuantos registros hay antes que registro_seleccionado

Ahora supongo que si haces algo como

Código SQL:
Ver original
  1. SELECT COUNT(*) FROM empresas WHERE id_jugador < registro_seleccionado ORDER BY parametro1, prametro2 LIMIT(registro_inicial, registro_por_pagina)

Te puede dar la posición en tu consulta específica.

Etiquetas: registro, resultados
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 00:39.