0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SOQL:親から子への参照における5レベル下のクエリ方法

Posted at

Salesforce Summer '24 から、SOQL で最大 5 レベル下の子レコードまでクエリできるようになりました。これにより、より深い階層の関連オブジェクトを 1 回のクエリで取得できます。

具体的な SOQL の例

たとえば、Account を親オブジェクトとして、以下のような関連を持つデータ構造があるとします。

  • Account (親)
    • Contact (子)
      • Case (孫)
        • CaseComment (ひ孫)
          • FeedItem (5レベル目)

この 5 階層のデータを 1 回の SOQL で取得するには、以下のように記述できます。

SELECT Id, Name, 
    (SELECT Id, FirstName, LastName, 
        (SELECT Id, Subject, Status, 
            (SELECT Id, CommentBody, 
                (SELECT Id, Body FROM FeedItems) 
            FROM CaseComments) 
        FROM Cases) 
    FROM Contacts) 
FROM Account

クエリの解説

  1. Account の ID と Name を取得
  2. Contact をサブクエリで取得(Contacts 関連リスト)
  3. Case を 2 階層目のサブクエリで取得(Cases 関連リスト)
  4. CaseComment を 3 階層目のサブクエリで取得(CaseComments 関連リスト)
  5. FeedItem を 4 階層目のサブクエリで取得(FeedItems 関連リスト)

ポイント

  • これまでは 1 回のクエリで 1〜2 階層程度が一般的だったが、5 階層まで一度に取得できるようになった。
  • 複数回のクエリ実行や Apex での後処理を減らし、パフォーマンスを向上させることができる。
  • FROM 句のオブジェクトの子オブジェクトは SELECT (サブクエリ) FROM [子オブジェクトのリレーション名] の形式で記述する。

この機能により、データの取得がより柔軟になり、SOQL クエリの記述が簡潔になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?