SQL-таблица
Collection: SQLCommunity Edition+Введение
SQL-таблица формируется с помощью SQL-запроса и не создаёт настоящую таблицу в базе данных. Она считывает результаты SQL-запроса, чтобы их можно было использовать в таблицах, подробной информации, диаграммах и рабочих процессах. Подходящие сценарии: сводные данные и статистические отчёты.
SQL-таблица поддерживает только инструкции SELECT или инструкции WITH ... SELECT, поддерживает только просмотр результатов запросов и не поддерживает добавление, редактирование и удаление данных.
Создание SQL-таблицы
- В меню источников данных в системных функциях перейдите на главную страницу источников данных.
- Выберите источник данных Main в списке источников данных и нажмите «Configure», чтобы перейти к основной базе данных.
- В разделе управления основной базой да нных нажмите «Create collection» и выберите «SQL collection».

Написание SQL-запроса
Введите SQL-запрос и нажмите «Execute», чтобы выполнить запрос и попытаться проанализировать возвращаемые поля и исходные таблицы данных. Нажатие «Execute» используется только для предварительного выполнения и анализа полей. После того как вы убедитесь, что SQL-запрос работает, нажмите «Confirm», чтобы форма могла отправить этот SQL как подтверждённый запрос.

Source collections — это исходные таблицы данных, определённые на основе SQL-запроса. Система определяет, из каких существующих таблиц данных в основном происходят поля результатов запроса, и при сопоставлении полей ограничивает доступные значения Field source.
Результат определения предназначен для быстрой настройки. Если SQL-запрос содержит псевдонимы, подзапросы, вычисляемые поля, агрегатные функции или сложные join, результат может быть неточным или определить источник не удастся. В этом случае можно вручную указать Source collections.
Сопоставление полей
Сопоставление полей — обязательная настройка после создания SQL-таблицы. Результаты SQL-запроса сообщают NocoBase только о том, какие столбцы были возвращены. Чтобы использовать эти столбцы в интерфейсе как обычные поля, необходимо подтвердить Field source или настроить Field interface и отображаемое имя поля.
Подробнее о настройке полей

Например, если SQL-запрос возвращает customers.name as customer_name и это поле происходит из поля «Название клиента» таблицы клиентов, его можно сопоставить с соответствующим полем таблицы клиентов. Тогда NocoBase сможет использовать заголовок и настройки интерфейса исходного поля.
Если поле является результатом вычисления, например count(*) as total или sum(amount) as amount_total, у него обычно нет однозначного исходного поля, поэтому необходимо вручную выбрать подходящий Field interface.
Field source зависит от Source collections. Только после выбора исходной таблицы данных в таблице сопоставления полей появятся доступные исходные поля этой таблицы.
Если при определении полей найден Field source, NocoBase в первую очередь повторно использует Field interface исходного поля. Если определить исходное поле не удалось, можно вручную указать Field source; если результат определения не соответствует смы слу данных, необходимо удалить Field source, после чего можно вручную указать Field source либо вручную выбрать Field interface и настроить Field display name.
Уникальный идентификатор записи
Для SQL-таблицы необходимо настроить Record unique key, иначе невозможно создать блок на странице и корректно просматривать записи. В качестве уникального идентификатора можно выбрать одно поле или комбинацию нескольких полей. Поля, подходящие для Record unique key, обычно соответствуют следующим условиям:
- Каждая строка в результатах запроса уникальна
- Значение поля стабильно и не изменяется из-за пагинации, сортировки или изменения условий статистики
- Поле не пустое
- Поле всегда возвращается в результатах запроса
Если результаты запроса получены из одной таблицы, рекомендуется в первую очередь возвращать первичный ключ исходной таблицы. Если результаты получены из объединения нескольких таблиц или агрегации, можно сохранить в SQL стабильный бизнес-ID либо вернуть несколько полей, которые совместно однозначно определяют запись.
Не используйте такие значения, как row_number(), которые изменяются в зависимости от сортировки, фильтрации или диапазона статистики, в качестве долгосрочного стабильного Record unique key. После изменения уникального идентификатора записи блоки страниц, права доступа, рабочие процессы и внешние API могут перестать находить ту же запись.
Предварительный просмотр результатов запроса
Перед отправкой используйте Preview, чтобы просмотреть результаты SQL-запроса. Во время предварительного просмотра проверьте:
- SQL выполняется без ошибок
- Все возвращаемые поля присутствуют
- Field interface и отображаемое имя соответствуют смыслу данных
- Record unique key существует, а данные уникальны
- Результаты запроса подходят для отображения на странице


