powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Постраничный вывод в Access.
25 сообщений из 43, страница 1 из 2
Постраничный вывод в Access.
    #32526832
goodw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!


Задача такая: выбрать из БД записи с 100-й по 120-ю.

SELECT TOP 20 * FROM [ table ] WHERE Id_records NOT IN (SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records) ORDER BY ID_records.

НО, из-за отсутствия внутренней оптимизации запросов в Access'e - тормозит (если в таблице 5000 записей, думает около минуты).
Если убрать TOP во вложенном запросе - работает быстро.

Вопрос: Как пропустить n-е число записей в Access, чтобы это работало быстро.

Заранее спасибо.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526835
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У меня глупый вопрос: а это поле проиндексировано?
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526839
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
(Кстати, это будут записи не с 100-й, а со 101-й...)
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526840
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой задачи
авторЗадача такая: выбрать из БД записи с 100-й по 120-ю.

БЫТЬ НЕ МОЖЕТ

МОЖЕТ БЫТЬ Такая задача:
Выбрать из БД записи, у которых значение поля ID находится внутри отрезка
100-120
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526845
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И решается она так -

Код: plaintext
1.
2.
Select * 
From [table]
Where Id_Records BETWEEN  100  AND  120 
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526848
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Victosha:

Хоть такой задачи быть и не может, но приведенный в вопросе селект работает!
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526849
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктоша

Такая задача не только может быть, но и реально используется
Для примера этот сайт :)

и по ссылке тебя
http://www.sql.ru/faq/faq_topic.aspx?fid=105
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526854
goodw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.

Да, вы правы. Выводить записи нужно со 101-й. Но это не существенно.
Поле проиндексировано.

Такая задача нужна для реализации пейджингового механизма. С возможностью сортировки данных по произвольному полю.

В этой связи хочу отметить: мне нужно выводить данные именно со 101-й записи по счету, а не со 102-м ID.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526861
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч

Саныч - это ,была просто шутка? Или мне нужно ответить по существу?
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526862
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
По ссылке paparome приведен вариант с временной таблицей... Похоже, что ничего более красивого нет.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526864
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Victosha:

Если у тебя шутка, то и у меня шутка. Else соответственно.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526869
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тормозит NOT IN - он вообще тормозной

как вариант (все равно идет сортировка)

1. Вычисляешь максимальный из первых 100
2. в условии вместо "NOT IN" пишешь "> п.1"

Осталась маленькая проблема, как это реализовать :(
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526883
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да, точно. Как-то так:

SELECT TOP 20 * FROM [ table ] WHERE Id_records > select max(SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records)
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526885
goodw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа!

Приведенный мною запрос хорошо работает в MS SQL, но очень тормозит в Access'e.

Собственно предложенное вами решение (http://www.sql.ru/faq/faq_topic.aspx?fid=105) полностью аналогично моему.

Решения с использованием временных таблиц мне не подходят - Access же все таки.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526887
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О еще идейка - но надо проверять

Что если конструкцию NOT IN заменить на left join, а во where проверять на Null

Что-то типа:
Код: plaintext
1.
2.
3.
4.
select top  20  *
from tbl x1 left join
(select top  100  id from tbl) x2
on x1.id = x2.id
where x2.id is null

1. А вдруг быстрее будет?
2. в MSSQL такое прокатит, а вот прокатит ли в Аксе?
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526893
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 goodw

Это мы заметили, ссылку для Вика бросил :)
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526895
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Стоп! Этот селект ведь строится динамически? Числа 20 и 100 ведь в него подставляются? Тогда можно запускать два селекта:

SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records

-> получили A=max ->

SELECT TOP 20 * FROM [ table ] WHERE Id_records > A

где выделенное красным вычисляется и подставляется.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526899
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч рулит :)
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526900
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
про ссылку на меня не понял,
а по ссылке, в разделе "классика" Glory меня сильно удивил.
придется проверить кое-где.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526906
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпро ссылку на меня не понял,
Забей

авторв разделе "классика" Glory меня сильно удивил.
придется проверить кое-где.
Что для Glory "классика", того мы можем и не знать

Сразу поправлюсь: того я могу и не знать :)
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526936
goodw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч:
энергоемкий способ.
"SELECT TOP 100 Id_Records FROM [ table ] ORDER BY ID_records

-> получили A=max ->"
Перебирать весь рекордсет - не пойдет.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526955
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
про ссылку понял - послали - оценил -)

2 All
надо же и так серьёзно все это обсуждается....

2 Саныч
у меня не шутка. в общем ввели меня в замешательство.

По энтузиазму обсуждения, поморщив репу, пришел для себя к такому выводу:
Раз люди находят для себя этом какую-то ценность - ну и хорошо.
Главное, чтобы было хорошо.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32526978
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 goodw:

Этот способ всяко не более энергоемкий, чем исходный. Потому что селект с TOP 100 запускается один раз, а не сравнивается поэлементно с внешним селектом, как в исходном случае.

А перебирать весь рекордсет не нужно. Он ведь рассортирован. MoveLast - и готово.
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32527000
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Victosha:

А чем этот вопрос хуже других? На этом форуме постоянно просят помочь написать запрос, переделать запрос, оптимизировать запрос...
...
Рейтинг: 0 / 0
Постраничный вывод в Access.
    #32527003
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory прав в классике - дошло до меня - что-то я последние дни совсем плох.

2 Саныч
(Задрав портки бегом присоединяюсь - уж больно веселый пэйджинг получается - как не поучаствовать....)
А moveLAst и не нужен вовсе, нужно просто ORDER BY трам-пам DESC сказать
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Постраничный вывод в Access.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]