1.31M
Категория: ИнформатикаИнформатика

Соединения. Информатика

1.

СОЕДИНЕНИЯ

2.

План занятия
1. Соединения в запросах
2. Левое и правое соединение
3. Полное и внутреннее соединение
4. Использование соединений в КЗ.
5. Особенности использования соединений.
6. Итог
7. Домашнее задание
2

3.

Соединения в запросах
3

4.

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

5.

Соединения в запросах
Существует четыре типа соединения:

Левое;

Правое;

Внутреннее;

Полное.
5

6.

Соединения в запросах
Общий синтаксис в запросе:
… <тип соединения> СОЕДИНЕНИЕ <вторая таблица> ПО
<связанное поле первой таблицы> = <связанное поле второй таблицы>
Тип соединения указывается один из четырех. После ключевого слова
СОЕДИНЕНИЕ указывается вторая таблица, после ПО указываются
связи между таблицами по полям:
6

7.

Соединения в запросах
Особенности соединений:

Псевдонимы таблиц должны быть различные;

Имена полей не должны пересекаться;

Возможно использование нескольких видов соединений в одном
запросе;

Для корректного отображения значений используется функция
ЕстьNULL();

Условием соединения может быть и “ИСТИНА” (каждая строка
соединяется с каждой строкой второй таблицы). Может вызвать
нехватку памяти на больших источниках или долго выполняться
(зависание).
7

8.

Левое и правое соединение
8

9.

Левое и правое соединение
Например, имеется две таблицы: справочник Контрагенты и регистр
накопления ДвиженияТовара. В результате хотим получить одну
таблицу в которой будет выборка по контрагенту и его общие обороты:
9

10.

Левое и правое соединение
Используем левое соединение. При этом:

В синтаксисе запроса используется ключевое слово ЛЕВОЕ
СОЕДИНЕНИЕ;

Выбираются все записи из левой таблицы и по условию
привязываются записи правой таблицы;

Поля правой таблицы, не привязанные по условию, имеют
значение Null;

Количество строк больше или равно количеству строк в левой
таблице (условие соединения может вызывать дубли);
10

11.

Левое и правое соединение
Для получения оборотов по контрагенту используется запрос:
В запросе выбираются все данные из справочника Контрагенты и
связанные записи из регистра накопления ДвиженияТовара;
11

12.

Левое и правое соединение
В результате выполнения запроса мы получим выборку:
Для контрагента “Контрагент без движений” нет записей по оборотам,
поэтому КоличествоОборот = Null
Для корректного отображения значений используется функция
ЕстьNULL();
12

13.

Левое и правое соединение
При использовании правого соединения:

В синтаксисе запроса используется ключевое слово ПРАВОЕ
СОЕДИНЕНИЕ;

Аналогично левому соединению. Используются все записи из
второй таблицы;

Например, выполнение текста запроса ниже даст такой же
результат как в примере при левом соединении:
13

14.

Полное и внутреннее
соединение
14

15.

Полное и внутреннее соединение
Например для получения таблицы реализаций и поступлений
используем запрос:
15

16.

Полное и внутреннее соединение
Получаем результат:
Значение которые равны Null можно обработать функцией ЕстьNULL();
16

17.

Полное и внутреннее соединение
При полном соединении:

В синтаксисе запроса используется ключевое слово ПОЛНОЕ
СОЕДИНЕНИЕ;

Число строк равняется количеству совпадающих по связанным
поля строк и все несовпадающие;

Это как левое и правое соединение в одном;
17

18.

Полное и внутреннее соединение
При внутреннем соединении таблиц реализации и поступления
используем запрос:
18

19.

Полное и внутреннее соединение
Получаем результат:
Выборка на выходе в виде одной таблицы с заполненными полями;
19

20.

Полное и внутреннее соединение
При внутреннем соединении:

В синтаксисе запроса используется ключевое слово ВНУТРЕННЕЕ
СОЕДИНЕНИЕ;

Число строк меньше или равно количеству строк таблицы у
которой меньше всего записей;

При соединении более двух таблиц - сначала производится первое
соединение, далее с результатом выполняется соединение по
цепочке таблиц.
20

21.

Использование соединений
в КЗ
21

22.

Использование соединений в КЗ
При настройке соединений в конструкторе запросов необходимо
выбрать таблицы на вкладке “Таблицы и поля”:
22

23.

Использование соединений в КЗ
Перейти на вкладку “Связи”:
Для простых таблиц система может самостоятельно определить связи;
Для определения дополнительных связей можно добавлять строки.
23

24.

Использование соединений в КЗ
Вид соединения определяется комбинацией значений флажков “Все”
24

25.

Использование соединений в КЗ
При этом возможны варианты:

Для левого соединения устанавливается значение “Все” для
первой таблицы;

Для правого соединения значение “Все” для второй таблицы;

Чтобы получить полное соединение устанавливаются значения
“Все” для двух таблиц;

Для внутреннего соединения соответственно снимаются оба
флажка;
25

26.

Использование соединений в КЗ
Управление значения реквизита “Произвольное” позволяет либо
вручную писать условие связи, либо выбирать поля для для связи из
списка:
26

27.

Особенности использования
соединений
27

28.

Особенности использования соединений
Анализировать пустые значения при левом или полном соединении;
Может сильно замедлить выборку использование полных соединений
или срезы последних из регистров сведений;
В конструкторе запросов обращать внимание на таблицы и поля на
вкладке “Связи”. Система может не корректно предложить вариант;
Если выбрать две таблицы и не указать связи, то получится неявное
полное соединение(таблицы в запросе перечисляются через запятую).
28

29.

Итог
Мы узнали:

Что такое соединение в запросе. Какие бывают виды соединений.
Мы научились:

Создавать текст запроса с соединениями.

Изменять и анализировать текст запроса.
29

30.

Домашнее задание
Задача "Информация по контрагенту":
Описание задачи
Создать внешнюю обработку ИнформацияПоКонтрагенту. Обработка формирует и
выводит на экран Табличный документ с информацией по контрагенту. В обработке
выбирается контрагент для формирования информации.
Требования к результату
Прикрепить .epf файл внешней обработки для формирования информации по
контрагенту и .dt выгруженной базы с данными.
*Смотрите сл. слайд
30

31.

Домашнее задание
Задача "Информация по контрагенту":
31
English     Русский Правила