Salesforce SOQL如何定位另一个表中的ID

时间:2019-05-27 12:02:34

标签: salesforce soql

我正在尝试找出如何进行特定查询,但是我受我的知识所限制。因此,任何帮助将不胜感激。

我有一些对象:员工,员工角色分配,学生组等。

我想做的是:

在每个“员工”个人页面内,创建一个表,其中包含已选择分配给特定员工的学生组的学生的学生信息。对象之间的关系是员工到员工角色分配(一对多),员工角色到学生组分配(多对一)。每个员工被分配许多角色,每个角色被分配一个学生团体。

我想做的是这样的:

SELECT Opportunity__r.Name, Opportunity__r.Email__c, Opportunity__r.Phone__c, Opportunity__r.Parent_Guardian_Email__c, Student_group__r.Name, Opportunity__r.Personal_Statement__c FROM Content__c WHERE Student_group_r.Employee_role_assignment__r.Employee__r.Id = :id

在WHERE之后的最后一部分是我所坚持的。有没有办法传递ID?

1 个答案:

答案 0 :(得分:0)

在Salesforce术语中,“员工角色分配”是连接对象

您要在此处添加几个额外的对象,这会使此操作更具挑战性。看起来您具有从Content__cOpportunity以及从Content__cStudent_Group__c的查找关系,并且所需的大多数数据实际上位于商机上。 Content__c有点像第二个结点对象。

您要根据机会是否与内容相关联来过滤机会,该内容与与该页面所在的员工相关联的学生团体相关。哇。

如果我正确理解了您的数据模型,则可以使用半联接子选择来实现。 看起来像这样:

List<Content__c> results = [
    SELECT Opportunity__r.Name, Opportunity__r.Email__c, Opportunity__r.Phone__c ...
    FROM Content__c
    WHERE Student_Group__c IN (
        SELECT Student_Group__c 
        FROM Employee_Role_Assignment__c 
        WHERE Employee__c = :thisEmployeeId
    )
];

内部:子句中带有WHERE的Apex绑定是将存储在某些局部变量中的Employee ID注入查询的方法。

相关问题