如何在 Salesforce (SOQL) 中执行 JOIN - 简单 Salesforce(Python 库)
How to perform a JOIN in Salesforce (SOQL) - Simple Salesforce (Python Library)
我正在使用 python 的 simpleSalesforce 库来查询 SalesForce。
我正在查看 SalesForce 中的两个不同对象:帐户和机会(父子)。机会对象中有一个accountId。
我正在尝试在两者和 select 结果(来自两个对象的字段)之间执行内部联接。
一个正常的 SQL 语句看起来像这样:
SELECT acc.Name, opp.StageName
FROM Account AS acc
JOIN Opportunity AS opp ON acc.Id = opp.AccountId
我不确定如何将这种查询转换为 SOQL。
Salesforce 不允许任意联接。您必须编写 relationship queries 以遍历 Salesforce 架构中的预定义关系。
在这里,你可以做类似
的事情
SELECT Name, (SELECT StageName FROM Opportunities)
FROM Account
不需要明确的联接逻辑,或者实际上是不允许的。另请注意,您的 return 值将是结构化的嵌套 JSON 对象 - Salesforce 不会像 SQL 查询那样 return 扁平行。
关于 SOQL 的几点说明:
- 不允许使用别名
- 不允许显式连接
但考虑到这一点,通过直接使用所需的字段名称作为对象关系的 "attribute" 仍然可以获得您想要的结果。示例:
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
我正在使用 python 的 simpleSalesforce 库来查询 SalesForce。
我正在查看 SalesForce 中的两个不同对象:帐户和机会(父子)。机会对象中有一个accountId。
我正在尝试在两者和 select 结果(来自两个对象的字段)之间执行内部联接。 一个正常的 SQL 语句看起来像这样:
SELECT acc.Name, opp.StageName
FROM Account AS acc
JOIN Opportunity AS opp ON acc.Id = opp.AccountId
我不确定如何将这种查询转换为 SOQL。
Salesforce 不允许任意联接。您必须编写 relationship queries 以遍历 Salesforce 架构中的预定义关系。
在这里,你可以做类似
的事情SELECT Name, (SELECT StageName FROM Opportunities)
FROM Account
不需要明确的联接逻辑,或者实际上是不允许的。另请注意,您的 return 值将是结构化的嵌套 JSON 对象 - Salesforce 不会像 SQL 查询那样 return 扁平行。
关于 SOQL 的几点说明:
- 不允许使用别名
- 不允许显式连接
但考虑到这一点,通过直接使用所需的字段名称作为对象关系的 "attribute" 仍然可以获得您想要的结果。示例:
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