Gracias por la respuesta,
Te aclaro el panorama para entiendas un poco mas para ver si logramos crear una query que nos funcione..
Como vos decis, no siempre vas a tener registros arriba y abajo, de hecho, eso lo tendria que contemplar, en caso de no tener arriba, el motivo seria por que estoy primero en el ranking y deberia aparecer primero, y viceversa si estoy en el ultimo..
Tome la query que me pasaste y a primeras no me funciono, por lo que le hice algunas modificaciones, nada importante, pero no funciono...
Código SQL:
Ver originalSELECT *
FROM
(SELECT U.userId, U.nicename , H.points
FROM bp_users u INNER JOIN bp_historypoints h ON U.userId = H.userId
WHERE H.points > (SELECT points FROM bp_historypoints WHERE userId = 21)
ORDER BY H.points DESC
LIMIT 3) T1
UNION
SELECT U.userId, U.nicename , H.points
FROM bp_users u INNER JOIN bp_historypoints h ON U.userId = H.userId
WHERE H.userId = 21
UNION
SELECT *
FROM
(SELECT U.userId, U.nicename , H.points
FROM bp_users u INNER JOIN bp_historypoints h ON U.userId = H.userId
WHERE H.points < (SELECT points FROM bp_historypoints WHERE userId = 21)
ORDER BY H.userId
LIMIT 2) T2;
El tema que no se si mencione, es que la tabla historypoints mantiene una historia de puntos, por lo que cada usuario tiene varios registros en esta tabla y el ultimo registro de cada usuario es el que corresponde como puntos actuales.
Por lo que esta consulta me tira un error diciendome que "La Subquery tieme mas de 1 resultado)..
Voy a seguir intentando para ver q puedo lograr, pero mas que hacer prueba y error, me gustaria poder comprender exactamente la idea de lo que me propusiste que no la entendi del todo
Muchas Gracias
Best
C