あるオブジェクトにどのくらい添付ファイルがついているか調査してほしいと依頼がありました。
そこで1レコード当たりの件数とファイルサイズを調べることにしました。
まず、レコードのIDの頭3文字がオブジェクトごとに決まっていることを利用して、
ParentIdの頭3文字を指定してLIKE検索しようとしたところ、下記のエラーによりNGとなりました。
invalid operator on id field
つまり、Id項目にLIKEは使えないらしいです。
(これって色んなところで不便なんですよね。)
試行錯誤の結果、サブクエリを使用して絞込むと上手くいきました。
結果出来上がったクエリ
-
SELECT ParentId
-
,COUNT(Id)
-
,SUM(BodyLength)
-
FROM Attachment
-
WHERE ParentId IN ( SELECT Id
-
FROM SObject__c)
-
GROUP BY ParentId
COUNT(Id)でAttachmentのレコード数、SUM(BodyLength)でファイルサイズの合計を取得でき、
GROUP BY ParentId とすることで、ParentIdごとに集計することができます。
つまり、COUNT(Id)は1つのParentIdに紐づくAttachmentの件数、
SUM(BodyLength)は1つのParentIdに紐づくAttachmentの合計ファイルサイズとなります。
あんまりSalesforceで集計関数もサブクエリって使わないんですよね。
私だけでしょうか?
その他のSalesforce記事