2011-08-19 2 views
2

나는 3 개의 테이블, 부모 테이블 및 2 개의 자식 테이블을 가지고있다. 어머니 _ c가 부모라고 말합니다. 그런 다음 하위 _c 및 Pet_ c는 어머니 _c에 대한 마스터 - 세부 관계 포인터가있는 두 개의 하위 테이블입니다.복잡한 쿼리가 가능합니까?

나는 내가 그 하나의 자식 _C 행의 Mother_ C에 해당 애완 동물 _C에서 모든 행을 검색하려면, CHILD_에서 C를 한 행의 ID를 가지고있다.

하나의 SOQL 쿼리에서 이것이 가능한지 궁금합니다.

답변

2

예, 이것은 semi-join SOQL에서 완전히 가능합니다. 이 같은 표준 CRM 오브젝트와이를 테스트 :

SELECT Id, 
     (SELECT Id FROM Cases) 
FROM Account 
WHERE Id IN (SELECT AccountId 
      FROM Contact 
      WHERE Id = '0036000000qCwp9' 
      ) 

가 먼저 부모 계정을 찾아 주어진 접촉 ID로,이 과정을 안내하고 자식 케이스까지 다시 통과하기. 사용자 정의 객체를 사용한 예제에서는 매우 비슷하지만 __r 사용자 정의 관계 이름을 대신 사용합니다.

SELECT Id, 
     (SELECT Id FROM Pet__r) 
FROM Mother__c 
WHERE Id IN (SELECT Mother__c 
      FROM Child__c 
      WHERE Id = '003a000000qCwp9' 
      ) 
+0

감사합니다! 나는 'IN'키워드를 알지 못했다. – Joe

+0

force.com 플랫폼의 까다로운 부분 중 하나가 출시를 따라 잡으려고 노력하고 있습니다. –