【问题标题】:Salesforce SOQL query: How to use SELECT with WHERE ConditionSalesforce SOQL 查询:如何使用带有 WHERE 条件的 SELECT
【发布时间】:2018-10-22 13:59:03
【问题描述】:

对于给定的 SOQL 查询,尝试优化 SOQL 查询。我有两个疑问

查询 1 从 salesforce 获取给定用户帐户的用户 ID

SELECT id From User WHERE Username = 'test@testmail.com'

查询 2 为给定的用户 ID 找到自定义对象

SELECT Id,Headline__c,Description__c
FROM Incident__c
WHERE Id IN (SELECT Incident__c FROM Node_Affected__c 
        WHERE (Incident__r.Account__c = '034524000000uzurX')
        AND Incident__r.Indicator__c = false)

现在我想将其优化为一个查询,这样我就不必从外部系统进行两次 api 调用。所以我在尝试

SELECT Id,Headline__c,Description__c
FROM Incident__c
WHERE Id IN (SELECT Incident__c FROM Node_Affected__c 
        WHERE (Incident__r.Account__c = null OR Incident__r.Account__c IN (SELECT id From User WHERE Username = 'test@testmail.com'))
        AND Incident__r.Indicator__c = false)

但我收到以下错误

MALFORMED_QUERY: 
Incident__r.Account__c IN (SELECT id From User WHERE Username = 'test@testmail.com'))
                                          ^
ERROR at Row:5:Column:87
Nesting of semi join sub-selects is not supported

有没有更好的方法来解决这类问题?在此先感谢:)

【问题讨论】:

    标签: select salesforce where soql


    【解决方案1】:

    您应该能够使用 SOQL 功能来跟踪外键并遵循 account__c 与用户表的关系并从那里过滤用户名,例如

    SELECT Id, Headline__c, Description__c
    FROM Incident__c
    WHERE Id IN (SELECT Incident__c FROM Node_Affected__c 
            WHERE (Incident__r.Account__c = null OR 
                   Incident__r.Account__r.Username = 'test@testmail.com')
            AND Incident__r.Indicator__c = false)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多