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

Problema con registro anterior y siguiente

Estas en el tema de Problema con registro anterior y siguiente en el foro de Mysql en Foros del Web. Supongamos la siguiente consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT * FROM articulos WHERE activo = 1 ORDER BY orden DESC , fecha DESC ...
  #1 (permalink)  
Antiguo 08/09/2014, 08:09
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Pregunta Problema con registro anterior y siguiente

Supongamos la siguiente consulta:
Código SQL:
Ver original
  1. SELECT * FROM articulos WHERE activo=1 ORDER BY orden DESC, fecha DESC, id DESC
El resultado muestra mas de 50 registros. Mi consulta es la siguiente, ¿hay alguna manera de obtener el registro anterior y siguiente del registro con 'id=1432' de este listado sin tener que recorrer todo el array resultado con PHP?
  #2 (permalink)  
Antiguo 08/09/2014, 08:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con registro anterior y siguiente

Probemos cone sto:
Código SQL:
Ver original
  1. SELECT * FROM
  2.     (SELECT *
  3.     FROM articulos
  4.     WHERE id < 1432 AND activo=1
  5.     ORDER BY id DESC
  6.     LIMIT 1)T1
  7. UNION
  8. SELECT * FROM
  9.     (SELECT *
  10.     FROM articulos
  11.     WHERE id > 1432 AND activo=1
  12.     ORDER BY id ASC
  13.     LIMIT 1) T2
  14. ORDER BY orden DESC, fecha DESC, id DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 08/09/2014, 13:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problema con registro anterior y siguiente

Muchas gracias gnzsoloyo en cuanto llegue a casa lo pruebo, tiene buena pinta pero... ¿no cabria la posibilidad de el registro anterior y posterior tengas los dos un id mayor pej.?
  #4 (permalink)  
Antiguo 08/09/2014, 14:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con registro anterior y siguiente

Cita:
¿no cabria la posibilidad de el registro anterior y posterior tengas los dos un id mayor pej.?
Por definición, algo anterior,debería tener un ID numérico inferior, siempre. Y en consecuencia, un ID posterior debería ser siempre mayor.
Esto, entendiendo que ese ID es numérico e incremental.

Si fuese alfanumérico, o bien responde al mismo concempto de "mayor a" y "menor a", o forzosamente debes tener algo que identifique cronológicamente determines cual entró primero y cuál después.

En definitiva, cualquier cosa que no sea numérica e incremental, deberás explicarla, porque no podemos adivinar lo que has hecho en ese caso, y qué determina lo "antes" y "después".

En resumen, dependerá de lo que tengas en ese dato.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/09/2014, 18:23
 
Fecha de Ingreso: febrero-2007
Mensajes: 3
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problema con registro anterior y siguiente

Esta sería una parte de los resultados que mostraría la consulta "SELECT * FROM articulos WHERE activo=1 ORDER BY orden DESC, fecha DESC, id DESC":

Código:
 id	| titulo	| fecha			| orden	| activo
 ...
 0542	| anexo 1	| 2014-08-30 13:07:45	| 10	| 1
 1536	| pruebas 10	| 2014-07-15 21:14:35	| 10	| 1
 1535	| titulares 5	| 2014-05-18 14:01:17	| 5	| 1
 1554	| anexo 5	| 2014-05-17 12:10:27	| 5	| 1
*1432	| Practica 6	| 2014-05-15 11:39:45	| 5	| 1
 2253	| anexo 3	| 2014-04-27 22:17:23	| 5	| 1
 2196	| titular 2	| 2014-04-30 13:07:45	| 5	| 1
 1478	| pruebas 11	| 2014-04-30 13:07:45	| 1	| 1
 1455	| anexo 1	| 2014-04-30 13:07:45	| 1	| 1
 ...
Como puedes observar al dar orden "ORDER BY orden DESC, fecha DESC, id DESC" el listado aparece con los ids revueltos y los registros que necesito obtener son el que está antes y después del '1432' osea el '1554' y '2253' respectivamente

Etiquetas: php, select, sql
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 14:26.