Связать таблицы (JOIN)
Связь нужна, когда нужные данные лежат в разных таблицах одной базы: в сделках — номер менеджера, а имя менеджера — в справочнике сотрудников. Связь по общему полю сводит их в одну таблицу датасета.
- Кто может
- Администратор и сотрудники с уровнем «Полные»
- Где
- Датасет → вкладка «Источники» → блок «Связи»
- Заранее
- Есть подключение к базе данных — см. «Подключить источник данных»
Связывать можно только таблицы одного подключения к базе данных. Файлы Excel, Google Таблицы и таблицы из разных подключений не связывают, а объединяют строками — см. «Несколько Google Таблиц».
Сделки
| № | manager_id | Сумма |
|---|---|---|
| 101 | 7 | 120 000 |
| 102 | 8 | 80 000 |
| 103 | 9 | 30 000 |
Менеджеры
| id | Имя |
|---|---|
| 7 | Анна |
| 8 | Борис |
Результат LEFT JOIN
| № | Менеджер | Сумма |
|---|---|---|
| 101 | Анна | 120 000 |
| 102 | Борис | 80 000 |
| 103 | — | 30 000 |
Связь: Сделки.manager_id = Менеджеры.id. Менеджера с ID 9 нет, но сделка № 103 остаётся в результате.
Связать две таблицы
Заголовок раздела «Связать две таблицы»-
Откройте датасет, вкладка «Источники». Добавьте подключение к базе и в окне «Выбор таблиц» отметьте обе таблицы. Первой отметьте основную — например, сделки: таблица, добавленная первой, становится главной в запросе.
-
В блоке «Связи» проверьте, что выбрано «Связать (JOIN)». Для баз данных оно выбрано сразу.
-
На схеме ниже — карточки таблиц. В каждой строке карточки — колонка и её тип, а у левого и правого края строки — маленькие точки.
-
Нажмите на точку справа от колонки в основной таблице — например, «manager_id» в сделках — и, не отпуская, протяните линию к точке слева от колонки во второй таблице — например, «id» в справочнике менеджеров.
-
Появится линия со стрелкой и подписью «LEFT JOIN». Если нужен другой тип соединения, нажмите на подпись и выберите его — см. ниже.
-
Раскройте блок «SQL Запрос» внизу вкладки и проверьте, что в запросе есть строка с JOIN.
-
На вкладке «Данные» проверьте поля и нажмите «Сохранить».
Третью таблицу связывают так же: линию тяните от основной таблицы или от уже связанной к новой. Не тяните линию к первой таблице — запрос не соберётся и сохранение покажет ошибку.
Типы соединения
Заголовок раздела «Типы соединения»Тип выбирают в подписи на линии связи. Сразу стоит «LEFT JOIN».
| Тип | Какие строки попадут в датасет | Пример |
|---|---|---|
| LEFT JOIN | Все строки основной таблицы. Если пары во второй нет, её поля будут пустыми | Все сделки, даже без менеджера |
| INNER JOIN | Только строки, у которых пара нашлась в обеих таблицах | Только сделки с менеджером из справочника |
| RIGHT JOIN | Все строки второй таблицы, даже без пары в основной | Все менеджеры, даже без сделок |
| FULL JOIN | Все строки обеих таблиц, с парой и без | Все сделки и все менеджеры |
Если не уверены, оставьте LEFT JOIN: он не теряет строки основной таблицы.
Схема связей
Заголовок раздела «Схема связей»| Что на схеме | Что делает |
|---|---|
| Серое имя в правом верхнем углу карточки | Короткое имя таблицы в запросе — например, managers_2 |
| Крестик в заголовке карточки — «Удалить таблицу» | Убирает таблицу из датасета вместе с её полями и связями |
| Карточку можно перетащить за заголовок | Расставьте таблицы, как удобно |
| «Сбросить позицию» | Выстраивает карточки в ряд |
| Кнопки внизу слева | Приблизить, отдалить и показать всю схему |
| Подпись на линии | Тип соединения. Крестик рядом удаляет связь |
| «Нет полей» в карточке | Колонки таблицы не загрузились — проверьте подключение |
| «Добавьте таблицы для создания связей» | В датасете ещё нет таблиц |
Одинаковые названия колонок
Заголовок раздела «Одинаковые названия колонок»Если колонка с тем же названием есть в обеих таблицах — например, id или «Название», — в датасете будут обе. Вторая получит имя с добавкой короткого имени таблицы: id__managers_2. Переименуйте её в понятное — щёлкните по имени в таблице полей на вкладке «Данные».
Лишние колонки второй таблицы — например, её собственный id — скройте значком глаза: скрытые поля не попадают в данные датасета.
После переименования и скрытия полей проверьте, что линии связей на схеме на месте, и нажмите «Сохранить» — почему, см. предупреждение в начале статьи.