2012-07-13 3 views
2

다음은 내 SOQL 문제입니다.SOQL을 사용하여 조인하기

쿼리 1 :

Select 
    c.Date_Joined__c, 
    c.Email, 
    c.FirstName, 
    c.LastName, 
    c.regcode__c 
from Contact c WHERE c.regcode__c ='XXXXXXXXX' 

쿼리 2

Select 
    p.Account__c, 
    p.Date__c, 
    p.Points__c, 
    p.Description__c, 
    p.Code__c 
from Points__c p where p.Account__c ='YYYYYYYYYYYY' and (p.Points__c > 0) 
Order by p.Date__c DESC 

두 쿼리 간의 관계 c.regcode__cp.Code__c는 같은 값을 가져야한다는 것이다.

내가 너무 c.regcode__c = p.Code__c

내가 붙어있어, QUERY2Query1을을 결합하려는, 나는 SOQL 구문의 권리를 얻을 수없는 것. API에서 조인을 할 수 있습니까?

+4

SOQL에서 'join'키워드가 없기 때문에 Apex 마법을 사용하지 않고 단일 쿼리에서이 데이터를 검색 할 수있는 방법이 없습니다. API를 통해 이것을 호출 함). 실제로 명시 적 조회 또는 마스터 - 세부 관계가있는 경우 SOQL은 여러 개체의 데이터 선택 만 지원합니다. http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_soql_relationships.htm – JCD

답변

7

당신은 정말이 말 당에 가입 만들 수 있지만이 유사한 구문을 사용하여 몇 가지 필터링을 수행 할 수 있습니다

SELECT Id FROM Contact WHERE c.RegCode__c IN (SELECT p.Code__c FROM Account) 

은 오랫동안 WHERE 절에 서브 쿼리로 단일를 반환 value와 codes는 이것이 작동해야하는 필터링 가능한 필드입니다. 또한 동일한 개체 (예 : 계정 간)로 필터링하려는 경우에는 작동하지 않습니다. 계정 측면에 예제 쿼리와 일치하는 기준을 추가 할 수 있습니다.

다시 말하지만, 이것은 참 조인이 아니므로 서브 쿼리의 계정 필드를 넣을 수 없습니다. 하지만 적어도 연락처를 필터링 할 수는 있습니다.

+0

건배 John, 도움이됩니다. – sw19womble

+1

나는 정말로이 [link] (http://sivatejaforce.wordpress.com/2011/02/11/a-deeper-look-at-soql-and-relationship-queries/)를 확인해야한다고 생각한다. 실제로 할 수있다. –

+0

@Jaun과 조인 할 때 내부 조인의 예는 하위 쿼리도 사용합니다. –