Salesforce - Apex - 基于活动历史记录的查询帐户
-
23-12-2019 - |
题
嘿salesforce专家,
我有效地有一个关于查询帐户信息的问题。我想根据ActivityHistory对象中的更新查询帐户。我得到的问题是,无论是“完整”的Activehistory,无论是否有“完整”,就会检索所有帐户。所以,有没有办法写入这个查询,只能使用具有status=“完成”和type_for_reporting='qrc'的activehistory来检索与activehistory的帐户只能检索
List<Account> AccountsWithActivityHistories = [
SELECT
Id
,Name
,( SELECT
ActivityDate
,ActivityType
,Type_for_Reporting__c
,Description
,CreatedBy.Name
,Status
,WhatId
FROM ActivityHistories
WHERE Status ='complete' and Type_for_Reporting__c = 'QRC'
)
FROM Account
];
. 解决方案
您在历史上有一个where子句,但您仍然错过了一个帐户级别。
例如,这将仅返回具有联系人的帐户:
SELECT Id, Name
FROM Account
WHERE Id IN (SELECT AccountId FROM Contact) // try with NOT IN too
.
活动是棘手的,因为他们不喜欢以这种方式在哪里使用。
http://www.salesforce.com/us/开发人员/文档/ officeToolkit / content / sforce_api_calls_soql_select.htm
- activityhistory
- 附件
- 事件
- Eventattendee
- 注意
- 开放性
- 标签(accounttag,contacttag和所有其他标记对象)
- 任务
- 在关系查询的主子句中,您只能引用 一个记录。例如,您无法过滤所有记录 帐户名称以“a”开头;相反,您必须引用单个 帐户记录。
- 你不能使用条款。
- 您必须在列表中返回的行数中指定499或更少的限制。
- 您必须按升序顺序排序ActivityDate和LastModifiedDate以降序;您可以持续显示空值。为了 示例:通过ActivityDate ASC NULL顺序,LastModifiedDate DESC。
看起来你需要多个查询。转到任务(或事件,根据自定义字段可见的事件),撰写一组考核,然后查询帐户?
或者您可以通过原始查询手动过滤列表,将帐户复制到帮助者列表:
List<Account> finalResults = new List<Account>();
for(Account a : [SELECT...]){
if(!a.ActivityHistories.isEmpty()){
finalResults.add(a);
}
}
. 不隶属于 StackOverflow