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

Posicion en una tabla segun el valor del campo

Estas en el tema de Posicion en una tabla segun el valor del campo en el foro de Mysql en Foros del Web. Hola, tengo una consulta Tengo una base de datos y una tabla. Digamos que los registros son id nombre ranking 1 Luis 9 2 Mario ...
  #1 (permalink)  
Antiguo 28/08/2006, 18:23
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
Posicion en una tabla segun el valor del campo

Hola, tengo una consulta
Tengo una base de datos y una tabla. Digamos que los registros son

id nombre ranking
1 Luis 9
2 Mario 7
3 Pedro 13
4 Jorge 8

Lo que quiero es hacer un select where id = 2
lo que quiero saber qué posicion tomaria si agrupo los registros por ranking. Sé cómo hacer si tengo todos los registros en un arreglo y hago un bucle para ordenarlos, pero no quiero que haya tanto trabajo, sino con un solo query o algo más simple... alguien sabe cómo lo puedo hacer?
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #2 (permalink)  
Antiguo 28/08/2006, 18:29
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
el id nunca cambia su valor(a menos que lo modifiques) y por lo tanto aunque lo ordenes no tienes problema al hacer select where id = 2, esto quedaria asi(ya ordenado por ranking):

id nombre ranking
2 Mario 7
4 Jorge 8
1 Luis 9
3 Pedro 13

no tendrias problemas.
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 28/08/2006, 18:33
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
No entiendo, creo que me expliqué mal.. en el caso que diga where id = 2 quiero que me devuelva 4
si hago where id = 4 quiero que me devuelva 3
si hago where id = 3 quiero que me devuelva 1

osea como si estuviera con un order by ranking desc pero no quiero que me devuelva toda la tabla, sino la posicion donde estaría el registro si hago el order by ranking desc
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #4 (permalink)  
Antiguo 28/08/2006, 18:54
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
oops; entendi mal, pero bueno se me ocurre que crees una tabla temporal que tenga:

campo1= posicion(autoincrement);
campo2= id=id

esto es, haces tu consulta trayendo solo el "id" y lo colocas en la tabla temporal y luego haces la consulta select posicion from tablatemporal where id = 2.

eso es lo único que se me ocurre por el momento.
espero y te sirva de algo.
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 28/08/2006, 19:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 58
Antigüedad: 17 años, 8 meses
Puntos: 0
select * from ranking order by ranking ASC limit 0,1 primer lugarr
select * from ranking order by ranking ASC limit 1,1 segundo
select * from ranking order by ranking ASC limit 2,1 tercero
select * from ranking order by ranking ASC limit 3,1 cuarto

ojala te sirva
  #6 (permalink)  
Antiguo 30/08/2006, 12:54
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 22 años, 3 meses
Puntos: 3
Claro eits, esa es una opción, la voy a analizar, porque tengo que calcular cuantos registros abran y si vale la pena. Pero igual gracias
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
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:40.