Salesforce SOQL一次性获得案例所有者

时间:2011-10-03 14:33:15

标签: salesforce soql

使用Salesforce SOQL我可以使用以下内容获取所有者的ID:

SELECT Case.OwnerId 
FROM Case 
WHERE Case.CaseNumber = '00001234'

然后,我可以在此查询中获取拥有该案例的用户的用户详细信息:

SELECT User.Id, User.Name, User.Custom_Field__c 
FROM User 
WHERE User.Id = '001A0000001abc1DEF'

但是我不能让它在一个声明中工作,我认为这是因为所有者!=用户,即使在这种情况下所有者实际上是用户。我试过了:

SELECT Owner.Custom_Field__c
FROM Case 
WHERE Case.CaseNumber = '00001234'

但是我收到一条错误,即Custom_Field__c不是有效字段。

2 个答案:

答案 0 :(得分:5)

Case上的所有者是一种多态关系,它可以是多种不同类型之一。当发生这种情况然后使用SOQL-R时,您只能选择所指向类型共有的字段子集(这些字段都在名为“Name”的伪实体上公开),因此您将无法查询自定义用户上的字段。您必须对Case进行查询,然后收集所有者集并向用户和/或组进行查询以获取更详细的信息。

答案 1 :(得分:2)

您可以使用SOQL中的半连接执行此操作。我测试了它,即使所有者是多态的,它仍然有效:

SELECT Custom_Field__c 
FROM User 
WHERE Id IN (SELECT OwnerId 
             FROM Case
             WHERE Case.CaseNumber = '00001234')