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

環境
Salesforce

操作例1
子オブジェクトのSOQL文では、FROM の後に子リレーション名を使います

書式
SELECT Name, (xxx) FROM Account
SELECT 句の中に、 ( ) で囲んだ子オブジェクトに関するSOQL文を含めます。

SOQL文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT Name,
(
SELECT LastName
FROM Contacts
)
FROM Account
SELECT Name, ( SELECT LastName FROM Contacts ) FROM Account
SELECT Name,
  (
    SELECT LastName
    FROM Contacts
  )
FROM Account

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

SOQL文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT Name,
(
SELECT Name
FROM Children__r
)
FROM Parent__c
SELECT Name, ( SELECT Name FROM Children__r ) FROM Parent__c
SELECT Name,
  (
    SELECT Name
    FROM Children__r
  )
FROM Parent__c

操作例3
子レコードを参照する際にも子リレーション名を使います。

SOQL文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
List<Parent__c> pList = [
SELECT Name,
(
SELECT Name
FROM Children__r
)
FROM Parent__c
];
System.debug(pList[0].Children__r[0].Name);
List<Parent__c> pList = [ SELECT Name, ( SELECT Name FROM Children__r ) FROM Parent__c ]; System.debug(pList[0].Children__r[0].Name);
List<Parent__c> pList = [
    SELECT Name,
      (
        SELECT Name
        FROM Children__r
      )
    FROM Parent__c
];
System.debug(pList[0].Children__r[0].Name);

 

Apex

Posted by arkgame