SOQL查询自定义对象的左联接

问题描述 投票:0回答:1

我需要从Salesforce获取数据。我需要从两个自定义对象获取数据。一世用sql编写查询,谁能帮助我将其转换为SOQL

SELECT ID, Name, Crop_Year__c, Targeted_Enrollment_Segments__c, Description__c, Start_Date__c, 
End_Date__c from Enrollment_Program__c EP
Left Join Account_Enrollment__c AE on EP.Crop_Year__c = AE.Crop_Year__c and EP.ID = 
AE.Enrollment_Program__c
where AE.Account__c = 'xyz'
salesforce soql salesforce-lightning
1个回答
0
投票

您可能知道,Salesforce SOQL没有显式的JOIN子句。它根据相关的对象字段为您隐式执行此操作。这意味着您必须查询Account_Enrollment__c并遍历字段以获得相关的Enrollment_Program__c查找关系。

另一个问题是Salesforce仅基于主键和外键执行联接,因此查询中的EP.Crop_Year__c = AE.Crop_Year__c将不起作用。

因此,您可以尝试以下操作:

SELECT Enrollment_Program__c, Enrollment_Program__e.Name,
 Enrollment_Program__r.Crop_Year__c, Enrollment_Program__r.Targeted_Enrollment_Segments__c,
 Enrollment_Program__r.Description__c, Enrollment_Program__r.Start_Date__c,
 Enrollment_Program__r.End_Date__c 
FROM Account_Entrollment_Program__c WHERE Account__c = 'zyz'

如果您事先知道Crop_Year__c值是什么,可以将其添加到查询中:

AND Crop_Year__c=:year AND Enrollment_Program__c.Crop_Year__c=:year

有关查询的一些详细信息:__r后缀是如何获取查询中寻址的查找对象。如果仅对ID感兴趣,则可以使用__c:year是将参数year传递给查询的方式。如果要附加为文本,则可以使用... Crop_Year='+ year + '

© www.soinside.com 2019 - 2024. All rights reserved.