Una consulta sql me trae de cabeza, porque conceptulamente implica una especie de WHERE jerarquico, de forma que no me sirve ni el OR ni el AND.
Veréis, trato de hallar el registro anterior y siguiente a uno con una determinada id. En la tabla hay dos campos numericos que van a condicionar el orden, id (autoincremental), y prioridad (el 1 es el primero, el 2 el segundo....).
Así pues, tengo un registro obtenido de una consulta previa con una prioridad y una id, y a partir de ellos, quiero encontrar el SIGUIENTE registro que tenga una prioridad más alta Y SÓLO SI NO HAY NINGUNO, entonces el que tenga igual prioridad y id más baja.
También quiero encontrar el ANTERIOR REGISTRO, que será el que tenga una prioridad más baja PERO SI NO HAY NINGUNO entonces el que tenga igual proridad y id más alta
En principio no puedo utilizar OR, porque no me vale una opción u otra, ni puedo utilizar AND, porque no se trata de que cumpla las dos condiciones, sino que se trata de que cumpla la primera condición, Y SOLO SI NO SE CUMPLE, que cumpla la segunda. Intento utilizar GROUP BY sin éxito, tal que así:
SELECT items.id,items.titular FROM items WHERE (priori < ".$id.") OR (priori <= ".$priori." and id > ".$id.") GROUP BY priori ORDER BY priori, id DESC LIMIT 1
Pero no me va.
Agradezco de antemano vuestra ayuda.