Перейти к содержимому

Связать таблицы (JOIN)

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

Кто может
Администратор и сотрудники с уровнем «Полные»
Где
Датасет → вкладка «Источники» → блок «Связи»
Заранее
Есть подключение к базе данных — см. «Подключить источник данных»

Связывать можно только таблицы одного подключения к базе данных. Файлы Excel, Google Таблицы и таблицы из разных подключений не связывают, а объединяют строками — см. «Несколько Google Таблиц».

Пример: связываем сделки и справочник менеджеров

Сделки

№manager_idСумма
1017120 000
102880 000
103930 000

Менеджеры

idИмя
7Анна
8Борис

Результат LEFT JOIN

№МенеджерСумма
101Анна120 000
102Борис80 000
103—30 000

Связь: Сделки.manager_id = Менеджеры.id. Менеджера с ID 9 нет, но сделка № 103 остаётся в результате.

  1. Откройте датасет, вкладка «Источники». Добавьте подключение к базе и в окне «Выбор таблиц» отметьте обе таблицы. Первой отметьте основную — например, сделки: таблица, добавленная первой, становится главной в запросе.

  2. В блоке «Связи» проверьте, что выбрано «Связать (JOIN)». Для баз данных оно выбрано сразу.

  3. На схеме ниже — карточки таблиц. В каждой строке карточки — колонка и её тип, а у левого и правого края строки — маленькие точки.

  4. Нажмите на точку справа от колонки в основной таблице — например, «manager_id» в сделках — и, не отпуская, протяните линию к точке слева от колонки во второй таблице — например, «id» в справочнике менеджеров.

  5. Появится линия со стрелкой и подписью «LEFT JOIN». Если нужен другой тип соединения, нажмите на подпись и выберите его — см. ниже.

  6. Раскройте блок «SQL Запрос» внизу вкладки и проверьте, что в запросе есть строка с JOIN.

  7. На вкладке «Данные» проверьте поля и нажмите «Сохранить».

Третью таблицу связывают так же: линию тяните от основной таблицы или от уже связанной к новой. Не тяните линию к первой таблице — запрос не соберётся и сохранение покажет ошибку.

Тип выбирают в подписи на линии связи. Сразу стоит «LEFT JOIN».

ТипКакие строки попадут в датасетПример
LEFT JOINВсе строки основной таблицы. Если пары во второй нет, её поля будут пустымиВсе сделки, даже без менеджера
INNER JOINТолько строки, у которых пара нашлась в обеих таблицахТолько сделки с менеджером из справочника
RIGHT JOINВсе строки второй таблицы, даже без пары в основнойВсе менеджеры, даже без сделок
FULL JOINВсе строки обеих таблиц, с парой и безВсе сделки и все менеджеры

Если не уверены, оставьте LEFT JOIN: он не теряет строки основной таблицы.

Что на схемеЧто делает
Серое имя в правом верхнем углу карточкиКороткое имя таблицы в запросе — например, managers_2
Крестик в заголовке карточки — «Удалить таблицу»Убирает таблицу из датасета вместе с её полями и связями
Карточку можно перетащить за заголовокРасставьте таблицы, как удобно
«Сбросить позицию»Выстраивает карточки в ряд
Кнопки внизу слеваПриблизить, отдалить и показать всю схему
Подпись на линииТип соединения. Крестик рядом удаляет связь
«Нет полей» в карточкеКолонки таблицы не загрузились — проверьте подключение
«Добавьте таблицы для создания связей»В датасете ещё нет таблиц

Если колонка с тем же названием есть в обеих таблицах — например, id или «Название», — в датасете будут обе. Вторая получит имя с добавкой короткого имени таблицы: id__managers_2. Переименуйте её в понятное — щёлкните по имени в таблице полей на вкладке «Данные».

Лишние колонки второй таблицы — например, её собственный id — скройте значком глаза: скрытые поля не попадают в данные датасета.

После переименования и скрытия полей проверьте, что линии связей на схеме на месте, и нажмите «Сохранить» — почему, см. предупреждение в начале статьи.

Вы решаете, разрешать ли статистику. Отказ не ограничивает доступ к сайту и отправку заявок.

Политика обработки данных ↗