如何在 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

这将在一个查询中获取相关的客户名称、机会名称和机会阶段名称。

只要您的基础对象上的字段是 LookupMaster-Detail 类型,您就可以使用这种类型的关系。对于自定义字段,您可以将 __c 切换为 __r

示例: 机会与自定义对象 Address__c 有关系,我们想知道这些机会位于哪个城市和国家/地区:

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