powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбиение запроса на страници
8 сообщений из 8, страница 1 из 1
Разбиение запроса на страници
    #32001538
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как сделать чтонить вроде:
Select TOP 25 FROM Table
SELECT NEXT 25 FROM Table

итд
(данные нельзя сортировать по ID)
Тоесть разбить запрос на страници для размещ. в инете.... (ASP)

Помогите ПЛЗ)
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001539
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=347&Idle=365&Sort=0&Order=Descend&Page=0&Session=
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001641
DRY_GIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tipa takogo :
Rs. eto tvoi record set
...
rs.Open SomeQuery,SomeConnection,3
...
rs.PageSize = 25
rs.AbsolutePage = SomePageNumber
...
i vpered
( eche est' rs.PageCount)
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001642
DRY_GIN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ya zabyl glavnoe, sorry
intCount=1
....
do while not rs.Eof and not rs.Bof and intCount<=25
...
intCount=intCount+1
...
loop
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001649
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага, а если полученно 100.000 строк?
рекордсет как будет работать?)
и что быстрее ограничить выбор при выборке или потом обрабатывать информацию?)))
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001681
AlxR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня такая же проблема. Сделал следующим образом:

1. Сначала запрос выполняешь целиком. (Плюсы - узнаешь количество возвращенных записей.)
2. Создаешь "временную" таблицу. "Временную" - не в понятиях SQL сервера и еще какой базы, а, например, для каждой активной сессии, т.е. создаешь ее сам. (я так понял, приложение для Web
)В этой таблице добавляешь поле IDENTITY, т.е. теперь каждая запись получается пронумерованной.
3. Запихиваешь результат запроса в эту "временную" таблицу.
4. Теперь, когда пользователь захотел получить, например, 30-тую страницу, делаешь запрос к "временной" таблице, используя BETWEEN, где в его параметрах задаешь "размер" выводимой страницы.

Это вкратце. На практике нужно смотреть еще на некоторые вещи.
1. Если, например, количество возвращенных записей меньше определенного числа, то выгоднее не запихивать результат во "временную " таблицу, а каждый раз выполнять полный запрос и ограничивать разбивку на страницы уже на уровне приложения.
2. Если у запроса меняется только порядок сортировки, адресовать его "временной" таблице.
3. Вовремя удалаять эти самые "временные" таблицы.
Вот, вроде вкратце все )) Удачи!
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001683
VICTOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может такой код заинтересует кого-нибудь.
Declare @i int
Select @i= 0
drop table #t
Select top 18 *,'n'=0,'лист'=0 into #t from m_cenn
update #t Set @i=n=@i+1
update #t Set лист=Round((n-1)/10,0)+1
select лист,n,nm from #t where лист=2
...
Рейтинг: 0 / 0
Разбиение запроса на страници
    #32001685
VICTOR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может такой код заинтересует кого-нибудь.
Declare @i int
Select @i= 0
drop table #t
--Это запрос в таблицу
Select top 18 *,'n'=0,'лист'=0 into #t from m_cenn
update #t Set @i=n=@i+1
update #t Set лист=Round((n-1)/10,0)+1
В приложении пользуемся только таблицей #t
select лист,n,nm from #t where лист=2
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разбиение запроса на страници
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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