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

Obtener ID anterior y posterior en una consulta

Estas en el tema de Obtener ID anterior y posterior en una consulta en el foro de Mysql en Foros del Web. Hola a todos. Quisiera saber si existe la posibilidad de determinar mediante una consulta cuál es el anterior y próximo ID que le corresponde, conjuntamente ...
  #1 (permalink)  
Antiguo 09/07/2008, 10:18
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Obtener ID anterior y posterior en una consulta

Hola a todos.

Quisiera saber si existe la posibilidad de determinar mediante una consulta cuál es el anterior y próximo ID que le corresponde, conjuntamente con otra columna de la tabla que sería el usuario.

En sintes, necesito saber el ID anterior y posterior al ID que ya se, teniendo en cuenta el id_usuario.

La tabla sería esta:

id | id_usuario | mensaje | fecha

Como obviamente en la tabla están los mensajes de TODOS los usuarios, lo que yo necesito es el anterior y el siguiente del que yo especifique.

Desde ya, muchas gracias.

Saludos,
Fernando.

P/S: Espero no haber enroscado demasiado la pregunta.
  #2 (permalink)  
Antiguo 09/07/2008, 12:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Obtener ID anterior y posterior en una consulta

Anterior a 344
SELECT id as anterior FROM nombretabla WHERE id<344 ORDER BY id desc LIMIT 1

Posterior a 344
SELECT id as posterior FROM nombretabla WHERE id>344 ORDER BY id ASC LIMIT 1

No me lo he inventado yo: se lo leí a djreficul en el siguiente post de este foro:
http://www.forosdelweb.com/f86/mysql...terior-440128/
  #3 (permalink)  
Antiguo 10/07/2008, 09:04
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Obtener ID anterior y posterior en una consulta

Entiendo, pero lo que yo buscaba era la forma de hacerlo en una misma consulta.
O sea, dentro de una consulta del tipo:

SELECT * FROM tabla WHERE id=ID AND id_usuario=ID_USUARIO

Utilizar algún join o algo que busque el ID anterior y el siguiente correspondiente al id_usuario

¿Me explico?

Mi idea es ahorrar la mayor cantidad de consultas posibles, pero por ahi en este caso no tiene sentido, lo único que deso obtener de la consulta son los ID anterior y siguiente correspondientes al id_usuario.
Por ahi pueden sugerirme o aconsejarme.

Saludos,
Fernando.
  #4 (permalink)  
Antiguo 10/07/2008, 11:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Obtener ID anterior y posterior en una consulta

Si el id usuario es 344, dos consultas en una:
SELECT (

SELECT id
FROM tutabla
WHERE id <344
ORDER BY id DESC
LIMIT 1
) AS anterior, (

SELECT id
FROM tutabla
WHERE id >344
ORDER BY id ASC
LIMIT 1
) AS posterior

En realidad, según creo, es lo mismo, aunque aparentemente lanzas una sola consulta.

Última edición por jurena; 15/07/2008 a las 14:22
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 05:15.