SOQLで子オブジェクトのレコードを取得する

photo of a turtle swimming underwater Apex
Photo by Belle Co on Pexels.com

この記事では、Apex の SOQL で子オブジェクトのレコードを取得する方法についてまとめています。

SOQL で子レコードを取得する書き方

ポイントは以下の2つです。

  • SELECT 句の中に、 ( ) で囲んだ子オブジェクトに関するSOQL文を含める
  • 子オブジェクトのSOQL文では、FROM の後に子リレーション名を書く
SELECT Name,
  (
    SELECT LastName
    FROM Contacts
  )
FROM Account

子オブジェクトがカスタムオブジェクトの場合、FROMの後は子リレーション名 + __r にする必要があります。

SELECT Name,
  (
    SELECT Name
    FROM Children__r
  )
FROM Parent__c

また、取得した子レコードを参照する際にも子リレーション名を使います。

List<Parent__c> pList = [
    SELECT Name,
      (
        SELECT Name
        FROM Children__r
      )
    FROM Parent__c
];
System.debug(pList[0].Children__r[0].Name);

子リレーション名の確認方法

子リレーションを確認する際は、オブジェクトマネージャで子となるオブジェクトを参照し、「項目とリレーション」から親オブジェクトとの参照(主従)関係項目の情報を見ると確認できます。

コメント

タイトルとURLをコピーしました