【问题标题】:How to perform a JOIN in Salesforce (SOQL) - Simple Salesforce (Python Library)如何在 Salesforce (SOQL) 中执行 JOIN - 简单的 Salesforce(Python 库)
【发布时间】:2020-01-08 12:04:56
【问题描述】:

我正在使用 Python 的 simpleSalesforce 库来查询 SalesForce。

我正在查看 SalesForce 中的两个不同对象:Account 和 Opportunity(父子)。机会对象内有一个 accountId。

我正在尝试在两者之间执行内部连接并选择结果(来自两个对象的字段)。 正常的 SQL 语句如下所示:

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

我不知道如何将这种查询翻译成 SOQL。

【问题讨论】:

    标签: python join salesforce soql simple-salesforce


    【解决方案1】:

    Salesforce 不允许任意联接。您必须编写 relationship queries 才能遍历 Salesforce 架构中的预定义关系。

    在这里,你会做类似的事情

    SELECT Name, (SELECT StageName FROM Opportunities) 
    FROM Account
    

    不需要或确实允许明确的连接逻辑。另请注意,您的返回值将是结构化的嵌套 JSON 对象 - Salesforce 不会像 SQL 查询那样返回扁平行。

    【讨论】:

    【解决方案2】:

    关于 SOQL 的几点说明:

    • 不允许使用别名
    • 不允许显式连接

    但考虑到这一点,通过直接使用所需字段名称作为对象关系的“属性”,仍然可以获得您想要的结果。示例:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多