Как выполнить JOIN в Salesforce (SOQL) - Simple Salesforce (Python Библиотека) - PullRequest
0 голосов
/ 08 января 2020

Я использую simpleSalesforce библиотеку для python для запроса SalesForce.

Я смотрю на два разных объекта в SalesForce: Account и Opportunity (parent-child). Внутри объекта возможности есть accountId.

Я пытаюсь выполнить внутреннее соединение между ними и выбрать результаты (поля из обоих объектов). обычный оператор SQL будет выглядеть так:

SELECT acc.Name, opp.StageName
FROM Account AS acc
JOIN Opportunity AS opp ON acc.Id = opp.AccountId

Я не уверен, как перевести этот тип запроса в SOQL.

Ответы [ 2 ]

1 голос
/ 08 января 2020

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

Здесь вы бы сделали что-то вроде

SELECT Name, (SELECT StageName FROM Opportunities) 
FROM Account

Нет явной логики соединения c требуется или действительно разрешено. Также обратите внимание, что возвращаемые значения будут структурированными, вложенными JSON объектами - Salesforce не возвращает плоские строки, как запрос SQL.

0 голосов
/ 29 января 2020

Несколько замечаний о SOQL:

  • Псевдонимы не разрешены
  • Не допускаются явные объединения

Но, учитывая это, все еще возможно получить желаемый результат, напрямую используя нужные имена полей в качестве «атрибута» объектных отношений. Пример:

SELECT account.Name, Name, StageName FROM Opportunity

, который будет захватывать имя связанной учетной записи, имя возможности и имя этапа возможности в одном запросе.

Пока поле вашего базового объекта имеет тип Lookup или Master-Detail, вы можете использовать этот тип отношений. В случае пользовательских полей вы переключаете __c на __r.

Пример. Возможность связана с пользовательским объектом Address__c, и мы хотим знать, в каком городе и стране эти возможности:

SELECT Address__r.Country__c, Address__r.City__c,Name, StageName from Opportunity

...