Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

выборка определенного кол-ва записей

9.4K
14 марта 2008 года
vitalik_4
37 / / 12.11.2006
public struct block
{
public int id;
public DateTime dt;
}
....
for (int i = 0; i < blocks.Length; i++)
{
string comm = string.Format("SELECT ID,Date,Valid,Latitude,Longitude,Altitude,Direction,Speed" +
",Sensor_1,Sensor_2,Sensor_3,Sensor_4,Sensor_5,Sensor_6,Sensor_7," +
"Sensor_8,Sensor_9,Sensor_10,RecordType,Freq_1,Freq_2,Status,Duplicate FROM LOG" +
"WHERE ID={0} AND Date>'{1}' AND Valid='True'", blocks.id, blocks.dt);

}

Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи,
считали следующие 1000 начиная с последней даты. В МySQL это limitom делалось а у меня
бд MS SQL.
11
14 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: vitalik_4
public struct block
{
public int id;
public DateTime dt;
}
....
for (int i = 0; i < blocks.Length; i++)
{
string comm = string.Format("SELECT ID,Date,Valid,Latitude,Longitude,Altitude,Direction,Speed" +
",Sensor_1,Sensor_2,Sensor_3,Sensor_4,Sensor_5,Sensor_6,Sensor_7," +
"Sensor_8,Sensor_9,Sensor_10,RecordType,Freq_1,Freq_2,Status,Duplicate FROM LOG" +
"WHERE ID={0} AND Date>'{1}' AND Valid='True'", blocks.id, blocks.dt);

}

Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи,
считали следующие 1000 начиная с последней даты. В МySQL это limitom делалось а у меня
бд MS SQL.



не в ту тему запостил...
а по существу: если есть какое либо поле автоинкриментное, то в условие добавить выборку по нему (BETWEEN) и каждый раз пределы этой выборки увеличиваешь с нужным шагом
ЗЫ: еще есть SELECT TOP

5
15 марта 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: vitalik_4

Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи...


Вот у меня в MsSql 2005 есть хранимка для страничного чтения данных из таблицы

Код:
ALTER PROCEDURE dbo.sdo_rubrics_GetRubricators
    (
    @page_index int,
    @page_size int
    )
AS
    SELECT id, title, locale, description
    FROM (
        SELECT id, title, locale, description,
            ROW_NUMBER() OVER (ORDER BY title ASC) AS row_num
        FROM sdo_Rubricators
    ) AS Rubricators
        WHERE row_num BETWEEN
            (@page_index * @page_size + 1)
            AND ((@page_index + 1) * @page_size)
        ORDER BY title ASC
Для 2000 сервера вместо ROW_NUMBER() придется использовать временную таблицу, в которую добавлять все данные из нужной + инкрементное поле, на которое накладывать BETWEEN условие на выборке.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог