· 

特定のオブジェクトに紐づく添付ファイル(attachment)の抽出方法

あるオブジェクトにどのくらい添付ファイルがついているか調査してほしいと依頼がありました。

そこで1レコード当たりの件数とファイルサイズを調べることにしました。

 

まず、レコードのIDの頭3文字がオブジェクトごとに決まっていることを利用して、

ParentIdの頭3文字を指定してLIKE検索しようとしたところ、下記のエラーによりNGとなりました。

 

 invalid operator on id field

 

つまり、Id項目にLIKEは使えないらしいです。

(これって色んなところで不便なんですよね。)

 

試行錯誤の結果、サブクエリを使用して絞込むと上手くいきました。

 

結果出来上がったクエリ

 

 

  1. SELECT   ParentId
  2.         ,COUNT(Id)
  3.         ,SUM(BodyLength)
  4. FROM     Attachment
  5. WHERE    ParentId IN ( SELECT Id
  6.                        FROM   SObject__c)
  7. GROUP BY ParentId

 

COUNT(Id)でAttachmentのレコード数、SUM(BodyLength)でファイルサイズの合計を取得でき、

GROUP BY ParentId とすることで、ParentIdごとに集計することができます。

 

つまり、COUNT(Id)は1つのParentIdに紐づくAttachmentの件数、

SUM(BodyLength)は1つのParentIdに紐づくAttachmentの合計ファイルサイズとなります。

 

あんまりSalesforceで集計関数もサブクエリって使わないんですよね。

 

私だけでしょうか?

 

その他のSalesforce記事


VisualforceでcommandButtonにrerender属性を設定して、 oncompleteにコールバック処理を記載したら動作してくれない。
Visualforceで生成したPDFが、Google Chromeで表示されない
項目履歴管理をデータローダで取得しようとしたらエラーが発生した。