Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 76
от 12.04.2006, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 257, Экспертов: 31
В номере:Вопросов: 1, Ответов: 4


Вопрос № 39649: Вот есть например база, где имеется поле время (timest_). Как выбрать, например, ровно 100 записей в порядке убывания, где их поле timest_ меньше заданного значения? (В идеале, чтоб не пропустить ни одной записи между записями с минимальным значением...

Вопрос № 39.649
Вот есть например база, где имеется поле время (timest_). Как выбрать, например, ровно 100 записей в порядке убывания, где их поле timest_ меньше заданного значения? (В идеале, чтоб не пропустить ни одной записи между записями с минимальным значением времени (100-я запись на выходе) и максимальным, которое задано).
P. S. БД - MS Access.
P. P. S. Индексы не предлагать, т. к. возможны вставки в середину таблицы, и ответы будут неверными, если брать записи типа:
where *
from baza
where (id >=100) and (id <=200)

т. к. id вставленной в середину записи может уже быть 1000.

Спасибо.
Отправлен: 07.04.2006, 15:25
Вопрос задал: mvp (статус: 10-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Doctor013
Здравствуйте, mvp!
Для Oracle я бы делал это так:
выборка промежуточных записей из результирующего множества-
select *
from (select a.*, rownum rnum
from (select * from my_table t where t.date_ where rownum <=100 )
where rnum >= 1

Во внутреннем запросе наладываем условие и сортируем по убыванию, следующим позапросом ограничиваем снизу (100 записей), самый верхний в Вашем случае не нужен, я его оставил для примера, если вдруг потребуется вывести записи с 5 до 100 и т.д. В приложении то, что получилось.

Приложение:

---------
Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.

Ответ отправил: Doctor013 (статус: Студент)
Ответ отправлен: 07.04.2006, 15:49

Отвечает: Kazakh
Здравствуйте, mvp!
В Аксесе замечательный диалект SQL.
Вот решение для вашей проблемы. Этот запрос выведет 100 записей удовлетворяющих условиям. ):
SELECT TOP 100 *
FROM "Ваша таблица"
WHERE timest_>"Ваше значение"

Вместо TOP 100 можно использовать %
То есть, TOP 10% выведет только 10 % всех записей.

---------
Если собеседник затрудняется ответить, значит, вопрос поставлен правильно.
Ответ отправил: Kazakh (статус: 5-ый класс)
Ответ отправлен: 07.04.2006, 15:55

Отвечает: Игорь Елизаров
Здравствуйте, mvp!

выбираем из таблицы table_1 100 записей у которых значение поля timest меньше заданного и сортируем выборку по этому полю
на SQL этот запрос выглядит так:
select top 100 * from table_1 where timest <@datatime
order by timest

В MS Access аналогично. то есть тут Top 100 задает количество возвращаемых записей.

С уважением, Игорь
Ответ отправил: Игорь Елизаров (статус: 3-ий класс)
Ответ отправлен: 07.04.2006, 18:11

Отвечает: Архангельский Андрей Германович
Здравствуйте, mvp!
В MS Access - никак
В Firebird достаточно написать

Select first 100 * from Table order by Timest desc
Ответ отправил: Архангельский Андрей Германович (статус: Практикант)
Ответ отправлен: 07.04.2006, 19:20


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное