この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

リレーションクエリの使用

SOQL を使用して、複数のリレーション種別を照会できます。

子-親リレーションの照会

子-親リレーション (多くの場合、多対一) を照会する場合は、ドット (.) 演算子を使用します。SELECT 句、FROM 句、または WHERE 句内で、これらのリレーションを直接指定してください。

1SELECT Id, Name, Account.Name
2FROM Contact 
3WHERE Account.Industry = 'media'

このクエリは、関連付けられた取引先の業種が「メディア」である取引先責任者に関してのみ、ID と名前を返し、そして返された各取引先責任者に関しては取引先名を返します。

親-子リレーションの照会

親-子リレーション (多くの場合は一対多) を照会する場合は、括弧で囲まれたサブクエリを使用します。サブクエリ内の FROM 句の初期メンバーが外部クエリの FROM 句の初期メンバーである場合、サブクエリ内でこれらのリレーションを指定してください。標準オブジェクトのサブクエリでは、リレーション名は子オブジェクトの複数形の名前になります。

API バージョン 58.0 以降では、SOQL のクエリに最大 5 レベルの親-子リレーションを含めることができます。5 レベルの親-子リレーションを照会する機能は、標準およびカスタムオブジェクトに対する REST および SOAP クエリコールを介した SOQL クエリでのみ使用できます。

各リレーションで、親はクエリの第 1 レベルと見なされ、子リレーションは親ルートから最大 4 レベルの深さになります。SOQL クエリに 6 レベル以上の親-子リレーションが含まれると、エラーが発生します。

この SOQL クエリの例には、5 レベルの親-子リレーションが含まれています。

1SELECT Name,
2    (SELECT LastName,
3        (SELECT AssetLevel,
4            (SELECT Description,
5                (SELECT LineItemNumber FROM WorkOrderLineItems)    
6            FROM WorkOrders)    
7        FROM Assets)    
8    FROM Contacts)    
9FROM Account

サブクエリに WHERE 句を含めると、クエリの親ルートから到達できる現在の範囲内の任意のオブジェクトで、親リレーション経由で絞り込みが実行されます。

このクエリの例では、業種がメディアであるすべての取引先の名前が返されます。返された取引先ごとに、作成者の別名が「x」のすべての取引先責任者の姓が返されます。

1SELECT Name,
2  (
3    SELECT LastName
4    FROM Contacts
5    WHERE CreatedBy.Alias = 'x') 
6 FROM Account WHERE Industry = 'media'

親-子リレーションをトラバースする SOQL クエリのバージョン管理された動作については、「リレーションクエリ制限について」を参照してください。

リレーションクエリのトラバース

親-子リレーションと子-親リレーションの両方をトラバースするリレーションクエリの例をいくつかご紹介します。

この例のクエリでは、組織のすべての取引先の名前が返されます。また取引先ごとに、取引先の各メモを作成したユーザの名前が返されます。取引先のメモがない場合は、結果セットには何も含まれません。

1SELECT Name,
2  (
3    SELECT CreatedBy.Name
4    FROM Notes
5  )
6FROM Account

以下は、親-子リレーションと子-親リレーションをトラバースするもう 1 つのクエリの例です。

1SELECT Amount, Id, Name, (SELECT Quantity, ListPrice,
2  PriceBookEntry.UnitPrice, PricebookEntry.Name,
3  PricebookEntry.product2.Family FROM OpportunityLineItems)
4  FROM Opportunity