2013-04-10 107 views
0

我有一個簡單的SOQL查詢:Salesforce的SOQL查詢返回的所有值,包括NULL

 
select Count(ID), CampaignId, Campaign.Name 
from CampaignMember 
where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') 
group by CampaignId, Campaign.Name 

查詢的結果帶回2個作爲記錄中有兩個活動成員名單的聯繫人。

我也想帶回計數爲0的第3條記錄。有沒有辦法在SOQL中做到這一點,我不相信有一個ISNULL()函數可以用於選擇。

回答

2

爲什麼你需要一個聚合查詢的任何特殊原因?做到這一點的方法之一是使用的關係,這樣的:

SELECT Id, Name, (SELECT Id FROM CampaignMembers) 
FROM Campaign 
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') 

在後面的代碼可以像

List<Campaign> campaigns = [Id, Name, (SELECT Id FROM CampaignMembers) 
FROM Campaign 
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')]; 

for(Campaign c : campaigns){ 
    System.debug(c.Name + ': ' + c.CampaignMembers.size()); 
} 
+0

感謝eyescream,這比我原來的做事方式更有意義。 – Ronnie 2013-04-10 15:38:22

0

您必須在您的soql查詢中添加一個名爲「Having」的附加部分。具有就像Where子句

select Count(ID), CampaignId, Campaign.Name 
from CampaignMember 
where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') 
group by CampaignId, Campaign.Name 
HAVING COUNT(ID) >0 

具有就像Where子句,但HAVING子句只適用於也出現在GROUP BY中的列。

+0

'HAVING'訪問只能更進一步地,如何限制行的量你打算用它來擴展它們嗎? – eyescream 2013-04-10 14:48:18