![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как найти 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]В некоторых серверах это возможно.
Как именно - зависит от сервера и его версии.