2012-03-22 3 views
1

나는 where 조건을 기반으로 일부 레코드를 쿼리하는 SOQL 쿼리를 가지고 있습니다.기회에있는 계정의 모든 관련 연락처를 가져 오는 SoQL 쿼리

select id, name,account.name ... <other fields> from opportunity where eventname__c='Test Event' 

또한 기회가있는 계정의 관련 연락처 세부 정보를 받아야합니다. 즉, 나는 기회에 계정의 일부인 담당자의 이메일 ID를 추가해야합니다.

기회마다 계정과 관련된 모든 연락처 이메일 주소를 알아야합니다.

나는이 문제에 대해 실제로 어떻게 생각할 수없는가요? 내가

SELECT Name, 
(
SELECT LastName 
FROM Contacts 
) 
FROM Account 

가 어떻게 기회와 함께이 사용할 수있는 쿼리를 사용하여 계정의 연락처 정보를 얻을 수있는 설명서를 참조?

감사

답변

6

문제는 당신이 다시 아래 아이들 (연락처)에 다음의 부모에게 기회에서 (계정)를 통과하는 것을 시도되고 있다는 점이다.

두 단계로 처리해야한다고 생각합니다. 대략 다음과 같습니다.

id[] accountids = new id[]{}; 
for (opportunity opp : [select accountid from opportunity where eventname__c='Test Event']) 
{ 
     accountids.add (opp.accountid); 
} 
account[] acclist = [select name, (select email from contacts) from account where id in :accountIds]; 
+0

실제로 SoQL 쿼리를 사용하여 달성 할 수 있습니까? – Prady

+4

하나의 Soql 쿼리만으로 원하는 것을 얻을 수 없다고 생각합니다. SOQL을 사용하면 쿼리하는 개체의 부모 및/또는 자식에 액세스 할 수 있지만 부모의 다른 자식에 액세스 할 수는 없습니다 (예 : 기회로 시작하고 연락처로 계정을 통해 쿼리 할 수 ​​없음) – naomi

+0

게시 한 코드 연락처를 첨부하여 원하는 모든 계정을 제공하십시오. – naomi