|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
как сделать чтонить вроде: Select TOP 25 FROM Table SELECT NEXT 25 FROM Table итд (данные нельзя сортировать по ID) Тоесть разбить запрос на страници для размещ. в инете.... (ASP) Помогите ПЛЗ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2001, 16:53 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=347&Idle=365&Sort=0&Order=Descend&Page=0&Session= ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2001, 16:54 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
tipa takogo : Rs. eto tvoi record set ... rs.Open SomeQuery,SomeConnection,3 ... rs.PageSize = 25 rs.AbsolutePage = SomePageNumber ... i vpered ( eche est' rs.PageCount) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2001, 18:05 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
ya zabyl glavnoe, sorry intCount=1 .... do while not rs.Eof and not rs.Bof and intCount<=25 ... intCount=intCount+1 ... loop ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2001, 18:18 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
ага, а если полученно 100.000 строк? рекордсет как будет работать?) и что быстрее ограничить выбор при выборке или потом обрабатывать информацию?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2001, 01:28 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
У меня такая же проблема. Сделал следующим образом: 1. Сначала запрос выполняешь целиком. (Плюсы - узнаешь количество возвращенных записей.) 2. Создаешь "временную" таблицу. "Временную" - не в понятиях SQL сервера и еще какой базы, а, например, для каждой активной сессии, т.е. создаешь ее сам. (я так понял, приложение для Web )В этой таблице добавляешь поле IDENTITY, т.е. теперь каждая запись получается пронумерованной. 3. Запихиваешь результат запроса в эту "временную" таблицу. 4. Теперь, когда пользователь захотел получить, например, 30-тую страницу, делаешь запрос к "временной" таблице, используя BETWEEN, где в его параметрах задаешь "размер" выводимой страницы. Это вкратце. На практике нужно смотреть еще на некоторые вещи. 1. Если, например, количество возвращенных записей меньше определенного числа, то выгоднее не запихивать результат во "временную " таблицу, а каждый раз выполнять полный запрос и ограничивать разбивку на страницы уже на уровне приложения. 2. Если у запроса меняется только порядок сортировки, адресовать его "временной" таблице. 3. Вовремя удалаять эти самые "временные" таблицы. Вот, вроде вкратце все )) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2001, 04:45 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
Может такой код заинтересует кого-нибудь. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2001, 10:27 |
|
Разбиение запроса на страници
|
|||
---|---|---|---|
#18+
Может такой код заинтересует кого-нибудь. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2001, 10:30 |
|
|
start [/forum/topic.php?fid=46&msg=32001641&tid=1827454]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 143ms |
0 / 0 |