Конференция "Базы" » как найти 10 "последних записей" в sql ? [D1, D2, D3, D4, D5, D6, D7, IB4.x, IB5.x, IB6.x, Firebird]
 
  • Вопрос (15.04.08 20:48) [0]
    Ну, к примеру, по дате добавления  - последних.
    Но как сделать чтобы их было именно 10 ?
    Это вообще возможно в SQL ? Как конкретно должен выглядеть такой запрос ?
  • Johnmen © (15.04.08 20:52) [1]
    В некоторых серверах это возможно.
    Как именно - зависит от сервера и его версии.
  • Вопрос (15.04.08 20:54) [2]
    Johnmen... и как должен выглядеть запрос select ?

    Firebird или IB.
  • Вопрос (15.04.08 20:56) [3]
    по дате добавления  - я имею ввиду, при наличии поля data. с датой. :>
  • Johnmen © (15.04.08 21:00) [4]
  • Anatoly Podgoretsky © (15.04.08 21:02) [5]
    > Вопрос  (15.04.2008 20:56:03)  [3]

    ORDER BY ... DESC
  • Вопрос (15.04.08 21:44) [6]
    Anatoly Podgoretsky, речь идет не о порядке выдаче, а об ограничении выдачи...
  • El Hombre (15.04.08 21:57) [7]
    В T-SQL можна использовать select top N [field list] from tableNme. Как с этим обстоят дела в Firebird или IB - не знаю
  • sniknik © (15.04.08 22:32) [8]
    > Anatoly Podgoretsky, речь идет не о порядке выдаче, а об ограничении выдачи...
    другая сторона медали...
    чтобы ограничить выдачу нужен порядок, т.к. без него нет не имеет смысла понятия - первая запись/последняя/последние 10 и т.д.

    > В T-SQL можна использовать select top N [field list] from tableNme.
    без order-а это фактически N случайных в разные моменты записей.
  • Вопрос (15.04.08 22:48) [9]
    порядок порядком, а ограничить-то как... если не привлекать генераторы порядкового ключа для ограничения, положим...
  • Вопрос (15.04.08 23:00) [10]
    SELECT FIRST 100 * FROM Table ORDER BY Data  DESC ?

    похоже так
  • palva © (15.04.08 23:01) [11]

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

    Так если порядок перевернут, то последние 10 станут первыми. Тогда надо написать SELECT FIRST(10) ...
  • PEAKTOP © (15.04.08 23:38) [12]

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


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

    SELECT ... FROM .... WHERE ... ROWS 100 TO 10
  • Вопрос (15.04.08 23:53) [13]
    PEAKTOP ©  в случае с датой и descendig это и будут последние 100.
    а что конкретно делает Rows ?
  • Anatoly Podgoretsky © (16.04.08 00:21) [14]

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

    Ну и чего ты тогда сопротивлялся против ORDER BY Data  DESC - это же как раз ключевой момент, классика, если не можешь получить 10 последних, то получи 10 первых в обратном порядке.
    Метод инверсии.
  • Вопрос (16.04.08 00:45) [15]
    Anatoly Podgoretsky
    да не сопротивлялся я...  как можно, Вага... (c)

    Спасиб, вообщем, всем.
  • PEAKTOP © (16.04.08 14:08) [16]
    > Вопрос   (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? - Посмотри внизу списка тем данного форума есть ссылки на страницы.
 
Конференция "Базы" » как найти 10 "последних записей" в sql ? [D1, D2, D3, D4, D5, D6, D7, IB4.x, IB5.x, IB6.x, Firebird]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]