完璧じゃなくてもとりあえず終わらせるブログ

主にSalesforceの悪夢を記録しています

SOQLで子オブジェクトを取得する

カスタムオブジェクトに関してのみ記載します。
まずは結論から。

子オブジェクトを取得するSOQL

具体例

SELECT id,
    (
        SELECT id
        FROM ChildObjects__r
    )
FROM ParentObject__c

サブクエリ*1で指定するFROM句がSFDCならではですね。

構文

SELECT id,
    (
        SELECT id
        FROM [子リレーション名]__r
    )
FROM ParentObject__c

カスタムオブジェクトは「__c」が自動付与されますが、リレーション名をSOQLで指定するときには「__r」を付与する必要があります。
(付与する必要がある、というかSFDCが勝手にそのように名前を裏で付けているのでそれを使わなければならない、というのが本当ですね)


子リレーション名とは

子オブジェクトに、項目(データ型:主従関係)を作成する際に任意で設定する名前です。

子オブジェクト側の主従関係項目の詳細を見れば確認できます

おそらくほとんどの現場では標準オブジェクトの例に則って、子リレーション名は「子オブジェクト名の複数形(s)」としているケースが多いのではないかと思いますが、途中から入った現場だと全然しきたりがわからないので子リレーション名の確認方法は押さえておきたいですね。


また、サブクエリで取得した子オブジェクトはList型で保持されることも意識しておきたい点です。



よし、とりあえず終わらせたぞ

*1:SFDCでは正しくはリレーションクエリ