2013-10-24 9 views
1

기회 레코드에있을 수있는 모든 "결제"연락처 역할 ID의 필드를 반환하려고합니다.교차 개체 SOQL 쿼리 대량화

나는 기회 아이디 및 관련 연락처 역할 ID 목록 (예 :지도>)

내가 trigger.new 루프에서지도 키를 만들 수는 없지만 수있다 내 기회 트리거의지도와 끝까지 할 내 SOQL 쿼리에서 연락처 역할 ID 목록을 삽입하는 방법을 찾는 것 같습니다.

List<OpportunityContactRole> contactRoleList 
= new List<OpportunityContactRole>([Select Id 
            From OpportunityContactRole 
            Where Role = 'Billing' 
             And OpportunityId in :listOfTriggerOppIds 
            ]); 

필요하다면 나머지 코드를 넣을 수는 있지만 실제로 작동하지 않는 것을 보면 나는 혼란을 줄 수 있다고 생각했습니다.

+0

코드를 입력하십시오. –

답변

0

귀하의 질문을 이해했는지는 확실하지 않지만 다음을 의미합니까?

Map<id,list<id>> mapOptyBillings = new Map<id,list<id>>(); //map of opportunityID, list<opportunityContactRole IDs 

List<OpportunityContactRole> contactRoleList 
= new List<OpportunityContactRole>([Select Id, OpportunityId 
            From OpportunityContactRole 
            Where Role = 'Billing' 
             And OpportunityId in :listOfTriggerOppIds 
            ]); 
//also query OpportunityId so that you can match 

//iterate your result 
for(OpportunityContactRole optyCR:contactRoleLis){ 
    //see if our map already has a list for the opportunity of this opportunityContactrole, 
    //if this is not the case, add it with a blank list 
    if(! mapOptyBillings.containsKey(optyCR.OpportunityId)mapOptyBillings.put(optyCR.OpportunityId, new List<id>(); 
    mapOptyBillings.put(optyCR.OpportunityId,optyCR.id); 
}