Всем привет, хочу выбрать 2 предыдущие и 2 следующие записи после искомого элемента в 1 запрос без использования UNION.
Оригинальный запрос:
SELECT * FROM (
(SELECT * FROM `table` WHERE id < 5 LIMIT 2)
UNION ALL
(SELECT * FROM `table` WHERE id > 5 LIMIT 2)
);
Сразу замечу, что UNION работает как надо, но чтобы запилить его в ActiveRecord нужна жуткая кастомщина в виде чистого sql.
Последнее, до чего додумался:
SELECT * FROM `table` WHERE id <> 5 ORDER BY id LIMIT 4 /* вот тут надо как-то сделать, чтобы 4 выбиралось не от начала таблицы, а 2 - слева, 2 - справа. */
Кстати, как принято в реальном мире в id могут быть дырки, поэтому AND BETWEEN не подходит :)
Спасибо, если кто поможет :)