Примеры использования временных таблиц в запросе

Статья демонстрирует примеры использования временных таблиц в SQL-запросах: простая выборка данных, соединение с основным запросом, использование в нескольких соединениях, вычисляемые поля, агрегатные функции, группировка и сортировка, вложенные запросы.

Пример1. Простая выборка данных с временной таблицей

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ВременнаяТаблица ТТ1.Добавить("Номенклатура", "Количество");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.Количество.Заполнить(СписокКоличество);

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура КАК Номенклатура,
    СУММА(ТТ1.Количество) КАК ОбщееКоличество
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
ГРУППИРОВАТЬ ПО
    ТТ1.Номенклатура";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример2. Соединение временной таблицы с основным запросом

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "Цена");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.Цена.Заполнить(СписокЦены);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    ТТ1.Цена,
    Товары.Склад
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
    ЛЕВОЕСОЕДИНЕНИЕ РегистрНакопления.Товары
    ПО ТТ1.Номенклатура = Товары.Номенклатура";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример3. Использование временной таблицы в нескольких соединениях

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "ДатаДокумента");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.ДатаДокумента.Заполнить(СписокДатыДокументов);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    ТТ1.ДатаДокумента,
    ТТ1.ДатаДокумента КАК ДатаДок
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
ЛЕВОЕСОЕДИНЕНИЕ РегистрНакопления.Товары
ПО ТТ1.Номенклатура = Товары.Номенклатура
ЛЕВОЕСОЕДИНЕНИЕ РегистрОпераций.Склады
ПО ТТ1.Номенклатура = Склады.Номенклатура
И ТТ1.ДатаДок = Склады.ДатаДокумента";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример4. Временная таблица с вычисляемыми полями

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "Цена", "Сумма");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.Цена.Заполнить(СписокЦены);
ТТ1.Сумма.Заполнить(СписокСуммы);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    ТТ1.Сумма
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
ГДЕ
    ТТ1.Сумма > 10000";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример5. Временная таблица с агрегатными функциями

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "Количество");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.Количество.Заполнить(СписокКоличество);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    МАКСИМУМ(ТТ1.Количество) КАК МаксимальноеКоличество
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
ГРУППИРОВАТЬ ПО
    ТТ1.Номенклатура";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример6. Временная таблица с группировкой и сортировкой

ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "ДатаДокумента");
ТТ1.Номенклатура.Заполнить(СписокНоменклатуры);
ТТ1.ДатаДокумента.Заполнить(СписокДатыДокументов);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    ТТ1.ДатаДокумента
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1
ГРУППИРОВАТЬ ПО
    ТТ1.Номенклатура
СОРТИРОВАТЬ ПО
    ТТ1.Номенклатура,
    ТТ1.ДатаДокумента";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Пример7. Временная таблица с вложенным запросом


ВременнаяТаблица ТТ1 = СоздатьВременнуюТаблицу();
ТТ1.Открыть();
ТТ1.Добавить("Номенклатура", "ДатаДокумента");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    Товары.Номенклатура,
    Товары.ДатаДокумента
ИЗ
    РегистрНакопления.Товары
ГДЕ
    Товары.Склад = &Склад";
Запрос.Выполнить().Выбрать(ТТ1);
ТТ1.Записать();

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    ТТ1.Номенклатура,
    ТТ1.ДатаДокумента
ИЗ
    ВРЕМЕННАЯТАБЛИЦА ТТ1";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
...

Поделиться с друзьями
Smirnov code
Добавить комментарий