Developer

サブクエリの制限【セールスフォース】

Developer
この記事は約2分で読めます。

こんにちは、アンダーソンです。
サブクエリを実行した際に取得できないケースがあったので残しておきます。

スポンサーリンク

取得できない項目タイプ

サブクエリとは、参照もしくは主従関係の主側から関連している子のレコードを取得してくる
SOQLの一種です。例えばAccountに対して関連しているAttchmentを取得する場合は下記のような
SOQLを発行します。

SELECT Id,(SELECT Id FROM Attachments) FROM Account

この場合の取得結果は下記のようになります。

Accountに関連している添付ファイルがリスト型で出てきます。
※子リレーションに関しては詳しくはこちらで説明しています。

さて、このAttachment、添付ファイルにはBodyという項目が存在するのですが、
項目のタイプはBlob型になります。
このBlob型をサブクエリで取り出そうとすると、

Binary fields cannot be selected in join queries

というエラーが出てきます。
Blob型の項目はサブクエリじゃ取得できないよというものです。
まさに青天の霹靂。知らなかった。。。

今回は添付ファイルを取り出して新しいAccountに付け替えるというものだったので、
素直にクエリを発行して付け替えました。

Attachmentの落とし穴

ここからおまけなんですが、AttachmentにはParent(親オブジェクトのId参照)という項目があります。今回このParentを新しいAccountのIdにかえればいいやと思っていたんですが、

Field is not writeable: Attachment.ParentId

親項目は変更することができないようです。
付け替えてそのまま前のやつを消すしかなさそうです。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。