Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как найти 10 "последних записей" в sql ? [D1, D2, D3, D4, D5, D6, D7, IB4.x, IB5.x, IB6.x, Firebird]


Вопрос ©   (2008-04-15 20:48:00) 

Ну, к примеру, по дате добавления  - последних.
Но как сделать чтобы их было именно 10 ?
Это вообще возможно в SQL ? Как конкретно должен выглядеть такой запрос ?


PEAKTOP   (2008-04-16 14:08:00) [1]

> Вопрос   (15.04.08 23:53) [13]
>
> а что конкретно делает Rows ?


Нумерует записи в SELECT и позволяет ограничивать выборку указаными записями в порядки их следования. Например, ROWS 100 TO 110 - означает вернуть из результата выборки записи с 100 по 110.

Конструкция появилась после роста популярности Firebird, особенно в области ERP-систем, когда начали прикручивать к ним WEB-интерфейс на PHP, где все PHP-кодеры привыкли, что в конструкции SELECT для машины баз данных MySQL есть ROWS. После долгих и продолжительных воплей конструкция была прикручена в SQL-сервер Firebird.

На фига нужна ROWS? - Посмотри внизу списка тем данного форума есть ссылки на страницы.


Вопрос   (2008-04-16 00:45:00) [2]

Anatoly Podgoretsky
да не сопротивлялся я...  как можно, Вага... (c)

Спасиб, вообщем, всем.


Anatoly Podgoretsky   (2008-04-16 00:21:00) [3]


> SELECT FIRST 100 * FROM Table ORDER BY Data  DESC ?
>
> похоже так

Ну и чего ты тогда сопротивлялся против ORDER BY Data  DESC - это же как раз ключевой момент, классика, если не можешь получить 10 последних, то получи 10 первых в обратном порядке.
Метод инверсии.


Вопрос   (2008-04-15 23:53:00) [4]

PEAKTOP ©  в случае с датой и descendig это и будут последние 100.
а что конкретно делает Rows ?


PEAKTOP   (2008-04-15 23:38:00) [5]


> SELECT FIRST 100 * FROM Table ORDER BY Data  DESC ?
>
> похоже так
>


это выбрать первые 100  записей. у Firebird v2.1 есть ROWS в операторе SELECT.

SELECT ... FROM .... WHERE ... ROWS 100 TO 10


palva   (2008-04-15 23:01:00) [6]


> порядок порядком, а ограничить-то как

Так если порядок перевернут, то последние 10 станут первыми. Тогда надо написать SELECT FIRST(10) ...


Вопрос   (2008-04-15 23:00:00) [7]

SELECT FIRST 100 * FROM Table ORDER BY Data  DESC ?

похоже так


Вопрос   (2008-04-15 22:48:00) [8]

порядок порядком, а ограничить-то как... если не привлекать генераторы порядкового ключа для ограничения, положим...


sniknik   (2008-04-15 22:32:00) [9]

> Anatoly Podgoretsky, речь идет не о порядке выдаче, а об ограничении выдачи...
другая сторона медали...
чтобы ограничить выдачу нужен порядок, т.к. без него нет не имеет смысла понятия - первая запись/последняя/последние 10 и т.д.

> В T-SQL можна использовать select top N [field list] from tableNme.
без order-а это фактически N случайных в разные моменты записей.


El Hombre   (2008-04-15 21:57:00) [10]

В T-SQL можна использовать select top N [field list] from tableNme. Как с этим обстоят дела в Firebird или IB - не знаю


Вопрос   (2008-04-15 21:44:00) [11]

Anatoly Podgoretsky, речь идет не о порядке выдаче, а об ограничении выдачи...


Anatoly Podgoretsky   (2008-04-15 21:02:00) [12]

> Вопрос  (15.04.2008 20:56:03)  [3]

ORDER BY ... DESC


Johnmen   (2008-04-15 21:00:00) [13]

http://www.ibase.ru/devinfo/dataaccesspaths.htm 2.4. Счетчики


Вопрос   (2008-04-15 20:56:00) [14]

по дате добавления  - я имею ввиду, при наличии поля data. с датой. :>


Вопрос   (2008-04-15 20:54:00) [15]

Johnmen... и как должен выглядеть запрос select ?

Firebird или IB.


Johnmen   (2008-04-15 20:52:00) [16]

В некоторых серверах это возможно.
Как именно - зависит от сервера и его версии.


Наверх

Титульная страница Поиск, карта сайта Написать письмо