Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/03/2012, 10:11
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: consulta mayor o menor

Hola edward18_1:

Para encontrar el id anterior podrías hacerlo así

Código:
select max(id) from tu_tabla where id < id_actual;
para encontrar el siguiente sería algo parecido, solo "invirtiendo" el sentido de las comparaciones:

Código:
Select min(id) from tu_tabla where id > id_actual;

Checa este script:

Código MySQL:
Ver original
  1. mysql> select id from tabla;
  2. +------+
  3. | id   |
  4. +------+
  5. |    5 |
  6. |    9 |
  7. |   10 |
  8. |   12 |
  9. |   15 |
  10. +------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> #para definir el id_actual
  14. mysql> SET @id_actual = 10;
  15.  
  16. mysql> #para encontrar el id ANTERIOR
  17. mysql> select max(id) from tabla where id < @id_actual;
  18. +---------+
  19. | max(id) |
  20. +---------+
  21. |       9 |
  22. +---------+
  23. 1 row in set (0.02 sec)
  24.  
  25. mysql> #para encontrar el id SIGUIENTE
  26. mysql> select min(id) from tabla where id > @id_actual;
  27. +---------+
  28. | min(id) |
  29. +---------+
  30. |      12 |
  31. +---------+
  32. 1 row in set (0.00 sec)

Observa lo que sucede cuando el ID corresponde a alguno de los extremos de tu tabla;

Código MySQL:
Ver original
  1. mysql> SET @id_actual = 5;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> select max(id) from tabla where id < @id_actual;
  5. +---------+
  6. | max(id) |
  7. +---------+
  8. |    NULL |
  9. +---------+
  10. 1 row in set (0.00 sec)
  11.  
  12. mysql> set @id_actual = 15;
  13. Query OK, 0 rows affected (0.00 sec)
  14.  
  15. mysql> select min(id) from tabla where id > @id_actual;
  16. +---------+
  17. | min(id) |
  18. +---------+
  19. |    NULL |
  20. +---------+
  21. 1 row in set (0.00 sec)

El resultado de las consultas sería NULL al obtener el anterior del id inicial y el siguiente del id final.

Saludos
Leo.