Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте,
Таблица
1 2013-06-08 00:00:00
2 2012-06-08 00:16:00
3 2015-06-08 00:34:00
4 2014-06-08 00:26:00
5 2016-06-08 00:59:00
...
Можно ли одним запросом вывести данные в таком виде, если задан ID=4
5 2016-06-08 00:59:00
3 2015-06-08 00:34:00
4 2014-06-08 00:26:00 - текущая запись
1 2013-06-08 00:00:00
2 2012-06-08 00:16:00
...
Здесь вывелись 2-ве ближайшие записи сверху, затем текущая запись с ID=4 и последующие N записей. Все отсортированно по дате.
Чтобы нагляднее увидеть для чего это надо, вот ссылка (блок справа).
Сейчас записи идут по айди, с этим много проблем, например когда пост создан, а опубликован аж через год, то весь список ломается.
Спасибо!
Отредактированно Марк (08.06.2016 15:41:20)
Неактивен
select .. from `таблица` where col_date<(select col_date from `таблица` where id=4) order by col_date desc limit 2
union all
select .. from `таблица` where id=4
union all
select .. from `таблица` where col_date>(select col_date from `таблица` where id=4) order by col_date limit N;
Неактивен
Боюсь, error UNION and ORDER BY будет, но сейчас попробую
Отредактированно Марк (08.06.2016 16:24:17)
Неактивен
Тогда
select .. from (
(select .., 1 as x from `таблица` where col_date<(select col_date from `таблица` where id=4) order by col_date desc limit 2)
union all
(select .., 2 from `таблица` where id=4)
union all
(select .., 3 from `таблица` where col_date>(select col_date from `таблица` where id=4) order by col_date limit N)) t
order by x;
Неактивен
Страниц: 1