2012-07-13 40 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__c將具有相同的值p.Code__c

我想查詢1結合QUERY2,所以c.regcode__c = p.Code__c

我堅持,我似乎無法得到SOQL語法正確。 它甚至可以在API中進行連接嗎?

+4

由於在SOQL中缺少'join'關鍵字,我沒有看到任何方法可以在單個查詢中檢索到這些數據而無需Apex魔術(您提到過你雖然通過API調用這個)。 SOQL確實只支持從多個對象中選擇數據,如果它們之間存在明確的查找或主從關係:http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_soql_relationships.htm – JCD 2012-07-13 20:51:48

回答

7

不能真正創造每說一個加入,但你可以使用一個類似的語法,做一些過濾:

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

只要WHERE子句中的子查詢只返回一個價值和代碼是一個可過濾的領域,應該起作用。此外,如果您嘗試使用同一個對象進行過濾(即帳戶到帳戶),則這不起作用。您可以在帳戶端添加更多條件以匹配您的示例查詢。

同樣,這不是一個真正的聯接,所以你不能把你的子查詢中的帳戶字段。但你至少可以過濾你的聯繫人。

+0

Cheers John,這有助於。 – sw19womble 2012-07-16 17:03:33

+1

我認爲你應該真的檢查這個[鏈接],你確實可以做到這一點(http://sivatejaforce.wordpress.com/2011/02/11/a-deeper-look-at-soql-and-relationship-queries/)加入 – 2013-04-05 12:43:18

+0

@Jaun,內部聯接的示例也使用子查詢。 – 2017-02-01 10:07:33