문제

Hey Salesforce 전문가,

쿼리 계정 정보에 효율적으로 질문이 있습니다.ActivityHistory 객체의 업데이트를 기반으로 계정을 쿼리하고 싶습니다.내가 얻는 문제는 "완전한"ActiveHistory가 있는지 여부에 관계없이 모든 계정이 검색됩니다.따라서 Status="Complete"및 type_for_reporting= 'QRC'가있는 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
];
.

도움이 되었습니까?

해결책

HISTORY에 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_api_calls_soql_select.htm

다음 객체는 현재 하위 쿼리에서 지원되지 않습니다.

  • actionhistory
  • 첨부 파일
  • 이벤트
  • eventattendee
  • note
  • offactivity
  • 태그 (AccountTag, ContactTag 및 다른 모든 태그 객체)
  • 태스크

추가로 ActiveHistory 정의는 비트 낙하각이기도합니다.

"모든 데이터보기"권한이없는 사용자에 대한 다음 제한 사항은 성능 문제를 방지합니다.

  • 관계 쿼리의 메인 절에서는 단지 참조 할 수 있습니다. 하나의 기록. 예를 들어 모든 레코드에서 필터링 할 수 없습니다. 계정 이름은 'A'로 시작합니다. 대신, 당신은 단 하나를 참조해야합니다 계정 기록.
  • 어디에서 절을 사용할 수 없습니다.
  • 목록에 반환 된 행 수에 499 개 이하의 한계를 지정해야합니다.
  • ActivityDate에서 Ascending Ordending 및 LastModifiedDate로 정렬해야합니다. 마지막으로 널을 표시 할 수 있습니다. 에 대한 예 : ActivityDate ASC NULLS 마지막으로 LastModifiedDate Desc.

여러 쿼리가 필요한 것처럼 보입니다. 작업 (또는 이벤트가 표시되는 사용자 정의 필드가 표시되는 경우)을 위해 AccountIds 세트를 작성한 다음 계정을 쿼리합니까?

또는 원래 쿼리에서 목록을 수동으로 필터링하여 계정을 도우미 목록에 복사 할 수 있습니다.

List<Account> finalResults = new List<Account>();
for(Account a : [SELECT...]){
    if(!a.ActivityHistories.isEmpty()){
        finalResults.add(a);
    }
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top