выборка из отсортированной таблицы

Syn23

Новичок
Доброго времени суток.
Столкнулся с задачей, не могу решить, прошу помощи или подсказки в какую сторону копать.Может я не тем способом достижения цели решил воспользоваться.

Дано: Есть таблица с 1000 записей, поля следующие: id, date(дата занесения), name, даты добавления не в хронологическом порядке, т.е. в разнобой.
Нужно: Сделать постраничный вывод записей из БД. Сортировка - по дате добавления, от поздней к ранней, т.е. последнюю добавленную в бд запись размещаем в самом начале на первой странице.
Как: без вытаскивания всей выборки в запросе.
Что пытался сделать: пытался с помощью ROW_NUMBER() задать нумерацию с сортировкой по полю с датой и вытащить например с 1 по 10 запись для вывода на первой странице.

Текст запроса:
SELECT *
FROM
( SELECT ROW_NUMBER() OVER(ORDER BY data) AS num FROM table1
WHERE num BETWEEN 1 for 10

Однако SQL выдает следующую ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(ORDER BY data) AS num FROM table1 WHERE num BETWEEN 1 for 10' at line 3




РЕШЕНО!! С помощью параметра LIMIT управляем сколько штук и с какого номера новости в выборке мы получим. Очень тривиальный способ оказался)
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
откуда беруться такие глубокие мысли?
PHP:
select * 
from table1
order by data DESC
limit 0,10
 

Syn23

Новичок
WMix Глубокая мысль взялась с просторов интернета и была моей единственной зацепкой. Но не суть, дальше по теме
PHP:
select * 
from table1
order by data DESC
limit 0,10
Изначально так и планировалось, потом поместить выборку в массив и вытащить по индексу необходимые записи.
Однако этот вариант был отброшен как не разумный, ибо в перспективе записей будет более 100 000 и получить нужные для отображения на странице записи нужно без запроса всех записей.
 

WMix

герр M:)ller
Партнер клуба
а что означает "нужные для отображения"
меняй лимит, пиши where


можно просто пример "нужных для отображения"
 

Syn23

Новичок
а что означает "нужные для отображения"
меняй лимит, пиши where


можно просто пример "нужных для отображения"
Конечно, сделаю более наглядно.
Пример таблицы
PHP:
+----------------------+
|   id    data            
------------------------
|    1    27.12.2012   |
|    2    05.12.2012   |
|    3    12.12.2012   |
|    4    21.12.2012   |
|    5    01.12.2012   |
|    6    13.11.2012   |
|    7    31.12.2012   |
|    8    21.11.2012   |
|    9    30.11.2012   |
А на странице должно отображаться следующим образом:
страница 1
запись 1 - id=7 data=31.12.2012
запись 2 - id=1 data=27.12.2013
запись 3 - id=4 data=21.12.2013
страница 2
запись 4 - id=3 data=12.12.2013
запись 5 - id=2 data=05.12.2013
запись 6 - id=5 data=01.12.2013
страница 3
запись 7 - id=9 data=30.11.2013
запись 8 - id=8 data=21.11.2013
запись 9 - id=6 data=13.11.2013

Т.е. в базе они отсортированы по id и даты все в разнобой.
А выводить нужно в порядке уменьшения даты, от поздней к ранней.
 

WMix

герр M:)ller
Партнер клуба
мой запрос покачто это делает. меняй лимит!
для страница 1
limit 0,3
для страница 2
limit 3,3
для страница 3
limit 6,3
 

Syn23

Новичок
мой запрос покачто это делает. меняй лимит!
для страница 1
limit 0,3
для страница 2
limit 3,3
для страница 3
limit 6,3
Заработало!!! Большое спасибо за помощь, WMix!! И большое спасибо за скорость!!!
Проблема оказалась в моих познаниях, но ничего, освою со временем.
 
Сверху