powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (SELECT SQL) Следующие n записей.
12 сообщений из 12, страница 1 из 1
(SELECT SQL) Следующие n записей.
    #32983149
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто знает как организовать запрос на следующие n записей от m-ой.
Это типа
Select top n ... order by (изменчивая),
но не top, а в идеале select sub n,m ... order by (изменчивая).
Да не смейтесь!!!
Лучше давайте обсудим!!! На многих форумах это есть, но проблема когда нужны записи 35 страницы (к примеру), на каждой странице по 20 записей от сортировки (по-фамильно или по дате или ...)
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983176
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilhom_uzМожет кто знает как организовать запрос на следующие n записей от m-ой.
Это типа
Select top n ... order by (изменчивая),
но не top, а в идеале select sub n,m ... order by (изменчивая).
Да не смейтесь!!!
Лучше давайте обсудим!!! На многих форумах это есть, но проблема когда нужны записи 35 страницы (к примеру), на каждой странице по 20 записей от сортировки (по-фамильно или по дате или ...)

А в чем проблема ?
Select ... From ... Where Between(RECNO(),N,M)
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983194
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диченко Ilhom_uzМожет кто знает как организовать запрос на следующие n записей от m-ой.
Это типа
Select top n ... order by (изменчивая),
но не top, а в идеале select sub n,m ... order by (изменчивая).
Да не смейтесь!!!
Лучше давайте обсудим!!! На многих форумах это есть, но проблема когда нужны записи 35 страницы (к примеру), на каждой странице по 20 записей от сортировки (по-фамильно или по дате или ...)

А в чем проблема ?
Select ... From ... Where Between(RECNO(),N,M)
Не внимательно читаешь...order by (по изменчивой сортирвке).
И ктому же recno() в select... ЭТо может фатально кончится..
Мне нужна сама технология. Хочу использовать в ХП на сервере..
----------
Где вообще модератор!!!(В рабочее время) %-))
На sql.ru уже это работает...
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983204
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilhom_uz Диченко Ilhom_uzМожет кто знает как организовать запрос на следующие n записей от m-ой.
Это типа
Select top n ... order by (изменчивая),
но не top, а в идеале select sub n,m ... order by (изменчивая).
Да не смейтесь!!!
Лучше давайте обсудим!!! На многих форумах это есть, но проблема когда нужны записи 35 страницы (к примеру), на каждой странице по 20 записей от сортировки (по-фамильно или по дате или ...)

А в чем проблема ?
Select ... From ... Where Between(RECNO(),N,M)
Не внимательно читаешь...order by (по изменчивой сортирвке).
И ктому же recno() в select... ЭТо может фатально кончится..
Мне нужна сама технология. Хочу использовать в ХП на сервере..
----------
Где вообще модератор!!!(В рабочее время) %-))
На sql.ru уже это работает...

Непонятно, где ты хочешь использовать такой селект, в фоксе или на sql сервере ? Если второе, то эти вопросы тысячекратно уже обсуждались на mssql форуме. По-моему, селект с n пл m записей даже занесен в faq. Что же касается переменной сортировки, то она спокойно делается с помощью case.
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983220
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем разница между
select top n * from .... order by fio
и
select * from .... where recn()<=n order by fio
и
select top n * from .... order by date1
и
select * from .... where recn()<=n order by date1
если в фоксе...
И еще-что возвращает recn() в каждом случае?
А за "ссылочки" спасибо...
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983616
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ни странно, но у меня так и не получилось решить поставленную задачу в одном SELECT SQL... Я всегда использовал временную таблицу, куда отбирал записи, считал их, затем получал курсор с PK ID number, который затем использовал как образец для отбора записей из основной таблицы по этим PK ID используя предикт IN ...

Путь простой, но немного медленный для больших таблиц... Данную технику я использую как в ХП для SQL Server так и для ХП в VFP...

Good luck!
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983633
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilhom_uz Где вообще модератор!!!(В рабочее время) %-))
На sql.ru уже это работает...
Модераторы на SQL.RU - люди на общественных началах (многие из них должны еще работать, у меня, например, сейчас очень сложный проект с весьма разнообразным набором технологий: ASP.NET Web Service + MS SQL Server 2000 + VFP 9.0), так что мне немного непонятна Ваша фраза
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983643
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо SergeyCh!
Никто не знает как работает изнутри select top n ... order by ...
По-моему изнутри перебирается всё, потом выводится top n.
Если это не так, поправьте (опровергните)
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983658
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilhom_uzСпасибо SergeyCh!
Никто не знает как работает изнутри select top n ... order by ...
По-моему изнутри перебирается всё, потом выводится top n.
Если это не так, поправьте (опровергните)
Нет, не совсем так - берутся первые записи. Достигнув указанного количества - выборка прекращается...

Если есть сортировка или Joint condidtions - то тут скорее всего идет отбор с использованием индексов (если есть) (причем выборка идет во временную таблицу/курсор) и опять-же остановка после набранного необходимого количества... Примерно так, как я описал Вам выше...

Но иногда выбираются и все...
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983683
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и думал, что с начала по индексам во временную...
Спасибо!!!
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983689
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот классический пример от SQL Server, почитайте, может быть поможет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
CREATE PROCEDURE [dbo].[sp_Forums_GetRepliesByPage]
@TopicID	int,
@PageNumber	int,
@PageSize	int
AS

-- create a temporary table with the columns we are interested in
CREATE TABLE #TempReplies
(
	ID 		int IDENTITY PRIMARY KEY,
	ReplyID		int,
	Message	text COLLATE Cyrillic_General_CI_AS,
	AddedDate	datetime,
	MemberID	int,
	MemberName	varchar( 15 ) COLLATE Cyrillic_General_CI_AS,
	Email		varchar( 50 ) COLLATE Cyrillic_General_CI_AS,
	ShowEmail	bit,
	Signature	varchar( 300 ) COLLATE Cyrillic_General_CI_AS,
	AvatarUrl	varchar( 100 ) COLLATE Cyrillic_General_CI_AS,
	Homepage	varchar( 100 ) COLLATE Cyrillic_General_CI_AS
)

-- fill the temp table with all the replies for the 
-- specified topic retrieved from the v_Forums_Replies view
INSERT INTO #TempReplies
(
	ReplyID,
	Message,
	AddedDate,
	MemberID,
	MemberName,
	Email,
	ShowEmail,
	Signature,
	AvatarUrl,
	Homepage
)
SELECT 
	ReplyID,
	Message,
	AddedDate,
	MemberID,
	MemberName,
	Email,
	ShowEmail,
	Signature,
	AvatarUrl,
	Homepage
FROM 
  v_Forums_Replies WHERE TopicID = @TopicID ORDER BY AddedDate Asc

-- declare two variables to calculate the range of records to extract for the specified page
DECLARE @FromID int
DECLARE @ToID int
-- calculate the first and last ID of the range of replies we need
SET @FromID = ((@PageNumber -  1 ) * @PageSize) +  1 
SET @ToID = @PageNumber * @PageSize

-- select the page of records
SELECT ReplyID, Message, AddedDate, MemberID, MemberName, Email, ShowEmail, Signature, AvatarUrl, Homepage 
	FROM #TempReplies WHERE ID >= @FromID AND ID <= @ToID

GO
...
Рейтинг: 0 / 0
(SELECT SQL) Следующие n записей.
    #32983695
Ilhom_uz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное техника, Ваш приведенный код конечно лишний(не бывает ничего лишнего). Но все равно спасибо.

Отличия профи от других:
С профи диалог длится гораздо меньше, чем с другими. :-))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / (SELECT SQL) Следующие n записей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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