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

Registro anterior y posterior de una sentencia sql

Estas en el tema de Registro anterior y posterior de una sentencia sql en el foro de Mysql en Foros del Web. Hola a todos he buscado en el buscador pero no encuentro algo parecido a mi situación. tengo esta consulta: Código PHP: SELECT orden_seo ,  cientifico ,  ...
  #1 (permalink)  
Antiguo 29/11/2011, 10:22
Avatar de MauricioCr  
Fecha de Ingreso: junio-2007
Ubicación: San Pedro, San Jose, Costa Rica, Costa Rica
Mensajes: 67
Antigüedad: 17 años, 5 meses
Puntos: 0
Registro anterior y posterior de una sentencia sql

Hola a todos he buscado en el buscador pero no encuentro algo parecido a mi situación.

tengo esta consulta:
Código PHP:
SELECT orden_seocientificoespanolnombre_antiguo FROM mybb_aves WHERE (espanol like 'A%' OR nombre_antiguo like 'A%') AND clase 'aves' ORDER BY espanol 
Lo que me da como resultado:



Ahora estoy viendo el registro orden_seo: 277, y quisiera tener en una variable el anterior registro (orden_seo: 65) y el posterior (orden_seo:171) o asi con cualquier orden_seo.

Trate de hacer esto:
Código PHP:
SELECT orden_seoespanol FROM (SELECT orden_seocientificoespanolnombre_antiguo FROM mybb_aves WHERE (espanol like 'A%' OR nombre_antiguo like 'A%') AND clase 'aves' and orden_seo 277 ORDER BY espanol LIMIT 1) AS todo WHERE orden_seo 277 ORDER BY espanol 
pero me agarra el valor orden_seo:110 por se el primero de la consulta y no el anterior del orden_seo:277

Espero comprendan y me puedan ayudar

Muchas gracias
  #2 (permalink)  
Antiguo 30/11/2011, 02:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Registro anterior y posterior de una sentencia sql

Si a tu consulta original le agregas un contador

SELECE @a:=@a+1 as contador,....resto de la consulta

para usar el contador en el where quizas tendras que hacer lo siguiente no se si estoy diciendo una tonteria


SELEC sbc.contador, sbc.resto campos
FROM (SELECE @a:=@a+1 as contador,....resto de la consulta) as sbc
WHERE sbc.contador<XXXX
ORDER BY sbc.contador DESC
LIMIT 1;

Donde XXXX es el valor del contador en tu registro 277, pero insisto no se si esto funciona obviamente el contador no es un campo normal, yo lo haria fuera.... en programación externa conviertes el resultado de la consulta en un array y podrás manejar la como quieras sin necesidad del contador....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/11/2011 a las 02:47
  #3 (permalink)  
Antiguo 30/11/2011, 09:43
Avatar de MauricioCr  
Fecha de Ingreso: junio-2007
Ubicación: San Pedro, San Jose, Costa Rica, Costa Rica
Mensajes: 67
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Registro anterior y posterior de una sentencia sql

Muchas gracias por su repuesta, ya veo un poco de luz, como dice, pongo la consulta en un array y ahi la manejo mejor.
Pero el contador me da NULL

Código:
SELECT @a:=@a+1 as contador, orden_seo, cientifico, espanol, nombre_antiguo FROM mybb_aves WHERE (espanol like 'A%' OR nombre_antiguo like 'A%') AND clase = 'aves' ORDER BY espanol
Resultado
  #4 (permalink)  
Antiguo 30/11/2011, 09:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Registro anterior y posterior de una sentencia sql

Es un problema de manejo de variables de usuario (variables de MySQL): Deben ser inicializadas antes de ser usadas:

Código MySQL:
Ver original
  1.    (@a:=@a+1) contador,
  2.    orden_seo,
  3.    cientifico,
  4.    espanol,
  5.    nombre_antiguo
  6. FROM mybb_aves JOIN (SELECT @a:= 0) T
  7.    (espanol like 'A%' OR nombre_antiguo like 'A%')
  8.    AND
  9.    clase = 'aves'
  10. ORDER BY espanol
Presta atención a la sintaxis puesta en el FROM.
__________________
¿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 30/11/2011, 09:55
Avatar de MauricioCr  
Fecha de Ingreso: junio-2007
Ubicación: San Pedro, San Jose, Costa Rica, Costa Rica
Mensajes: 67
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Registro anterior y posterior de una sentencia sql

Muchas gracias gnzsoloyo! ;)

Etiquetas: registro, select, sentencia, sql, anteriores
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 23:06.