SQL запросы (версия 3.xx): различия между версиями

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску
 
(не показано 11 промежуточных версий 2 участников)
Строка 32: Строка 32:
Запросы такого вида будут выполнены последовательно один за другим. В качестве результата используется результат последнего запроса. Если один из запросов выполнится с ошибкой, выполнение остальных запросов будет прервано.
Запросы такого вида будут выполнены последовательно один за другим. В качестве результата используется результат последнего запроса. Если один из запросов выполнится с ошибкой, выполнение остальных запросов будет прервано.


== SQL запросы Bitrix24 ==
Особенности построения SQL запросов для различных источников данных:
Для работы с данными CRM Bitrix24 можно использовать стандартные SQL запросы, которые буду преобразованы в формат [http://dev.1c-bitrix.ru/rest_help/ REST API Bitrix24].
*[[SQL запросы (версия 3.xx)/Text | Text]]
Поддерживаются SQL - операторы:
*[[SQL запросы (версия 3.xx)/Access | Access]]
* '''select''' - выборка данных. В списке полей можно указать * - все поля, или список полей через запятую, например ID, Phone и т.д. При использовании * есть особенность, возвращаются не все поля выбранной таблицы, не возвращаются обьектные поля, например, поле номера телефона Phone, его нужно указывать явно. Выражения не поддерживаются.
*[[SQL запросы (версия 3.xx)/Bitrix24 | Bitrix24]]
** '''where''' - позволяет указать условие выборки. Первым операндом должно быть имя поля указанной таблицы, оператор сравнения может быть like, >=, <=, =, >, <, вторым операндом должна быть константа. Выражения не поддерживаются.
*[[SQL запросы (версия 3.xx)/amoCRM | amoCRM]]
** '''order by''' - позволяет указать порядок сортировки результатов в формате <имя поля> [asc|desc]. Выражения не поддерживаются. Например: order by Id desc
*[[SQL_запросы_(версия_3.xx)/1C | 1C]]
** '''limit''' - позволяет указать начальное значение выборки и количество строк. Например: limit 50 или limit 10, 50
*[[SQL_запросы_(версия_3.xx)/2GIS | 2GIS]]
* '''insert''' - вставка данных, позволяет указать список полей и константы значений, выражения не поддерживаются.
*[[SQL_запросы_(версия_3.xx)/VCGKH | Информационная система ВЦ ЖКХ]]
* '''update''' - изменение данных, позволяет указать список изменяемых полей и единственное условие отбора: where id =.
*[[SQL_запросы_(версия_3.xx)/Ariadna | Медицинская информационная система Ариадна]]
* '''delete''' - удаление данных, позволяет единственное условие отбора: where id =.


Помимо стандартного синтаксиса SQL, в запросах к источнику данных Bitrix24 можно использовать вставки родного синтаксиса REST API Bitrix24. Для этого используется конструкция /! !/. Такую возможность можно использовать в операторах:
== Recordset ==
* '''where''' - для указания условий выборки, например: where /! {"=ID": 4} !/. Полученное значение будет поставлено в параметр '''filter''' REST API Bitrix24. Подробное описание фильтров REST API Bitrix24 можно посмотреть [http://dev.1c-bitrix.ru/api_help/iblock/filters/index.php здесь].
* '''order by''' - для указания порядка сортировки, например: order by /! {"DATE_CREATE": "ASC"} !/. Полученное значение будет поставлено в параметр '''order''' REST API Bitrix24.
* '''limit''' - для указания смещения выборки и количества строк, например: limit /! {limit: 5, offset: 10} !/. Полученные значения будет поставлено в параметры '''limit''' и '''offset''' REST API Bitrix24.


 
Recordset - это двумерный массив с полями и их данными, иначе говоря - это таблица с данными. Подробнее о Recordset [[SQL_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_(%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_3.xx)/Recordset | здесь]].
Если по каким то причинам стандартный синтаксис SQL не подходит, можно использовать вызовы методов REST API Bitrix24 напрямую, без преобразования. Для этого следует вместо SQL запроса указать конструкцию:
 
/! {Method: <название метода>, Params: <параметры метода>} !/
 
Например:
 
/! {Method: 'crm.contact.list',
    Params: {
                order: { "DATE_CREATE": "ASC" },
                filter: { "TYPE_ID": "CLIENT" },
                select: [ "ID", "NAME", "LAST_NAME", "TYPE_ID", "SOURCE_ID" ]
            }
    }
!/
 
 
Подробное описание формата вызова родных методов REST API Bitrix24 можно посмотреть [https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=5753 здесь].
 
Помимо этого SQL-запросы к этому источнику данных могут содержать комментарии в виде /* */ и содержать несколько запросов разделенных символами // на новой строке.
 
== SQL запросы amoCRM ==
Для работы с данными amoCRM можно использовать стандартные SQL запросы, которые буду преобразованы в формат [https://developers.amocrm.ru/rest_api/#fields REST API amoCRM].
Поддерживаются SQL - операторы:
* '''select''' - выборка данных. В списке полей можно указать только * - все поля.
** '''where''' - позволяет указать условие выборки. Поддерживается только условие отбора id =.
** '''limit''' - позволяет указать начальное значение выборки и количество строк. Например: limit 50 или limit 10, 50
* '''insert''' - вставка данных, позволяет указать список полей и константы значений, выражения не поддерживаются. Обязательное поле: name.
* '''update''' - изменение данных, позволяет указать список изменяемых полей и единственное условие отбора: where id =.
 
Помимо стандартного синтаксиса SQL, в запросах к источнику данных amoCRM можно использовать вставки родного синтаксиса REST API amoCRM. Для этого используется конструкция /! !/.
 
Если по каким то причинам стандартный синтаксис SQL не подходит, можно использовать вызовы методов REST API amoCRM напрямую, без преобразования. Для этого следует вместо SQL запроса указать конструкцию:
 
/! {Method: <название метода API>, Type: <тип запроса>, Params: <передаваемые параметры>, Result: <получаемые результаты из указанной таблицы>} !/
 
Например:
 
/! {Method: 'contacts/list', Type: 'GET', Params: {type: 'all'}, Result: 'contacts'} !/
 
 
Подробное описание формата вызова родных методов REST API amoCRM можно посмотреть [https://developers.amocrm.ru/rest_api/#fields здесь].
 
Помимо этого SQL-запросы к этому источнику данных могут содержать комментарии в виде /* */ и содержать несколько запросов разделенных символами // на новой строке.

Текущая версия на 11:49, 3 сентября 2020

SQL - запросы (structured query language) являются очень эффективным языком для управления данными (Википедия). Несмотря на большие возможности, которые предоставляет язык SQL, в простых ситуациях он достаточно просто и не требуют специальных знаний. Основные контрукции языка практически не зависят от типа используемого источника данных.

SQL запросы

Например, для того что бы выбрать все данные из нужной таблицы, скажем листа документа Excel достаточно просто указать:

select * from `Лист1$`

Этот запрос выберет все данные с листа Лист1 документа Excel. Если вам не нужны все строки, можно выбрать только нужные, для этого служит оператор where, например запрос:

select * from `Лист1$` where City = 'Москва'

выберет все данные с листа Лист1 у которых в столбце City указан город Москва.

Если вам нужно выбрать данные в определенном порядке, достаточно добавить оператор order by, например запрос:

select * from `Лист1$` where City = 'Москва' order by Phone

выберет все данные с листа Лист1 у которых в столбце City указан город Москва по порядку номеров телефонов в столбце Phone.

Особенность SQL запросов Call Office

В программе Call Office вы можете указать любое количество SQL запросов разделяя их символами // с новой строки, например:

 update `Лист1$` set Name = 'Иван' where Id = 15
 //
 update `Лист1$` set Status = null
 //
 select * from `Лист1$`

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

Особенности построения SQL запросов для различных источников данных:

Recordset

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