SalesforceのSOQLで副問い合わせ(サブクエリ)を使用する方法

salesforce

一度のクエリで複数のオブジェクトを取得したいときや、項目に特定の文字列を含んだレコードに紐づく別オブジェクトを取得したい時の備忘録として記載。

目次

子オジェクトの検索

親オブジェクトの項目を出力(検索可能リレーション:参照関係、主従関係)

出力したい参照項目のAPI参照名の末尾を”c“から”r“に変更することで参照先オブジェクトの項目を参照することができる。

SELECT Id, Name, Parent__r.Name FROM Child__c

親オブジェクトの項目を検索条件に設定(検索可能リレーション:参照関係、主従関係)

出力したい参照項目のAPI参照名の末尾を”c“から”r“に変更することで参照先オブジェクトの項目を条件式として使用することができる。

SELECT Id, Name FROM Child__c WHERE Parent__r.Name = “”

親オブジェクト検索結果を検索条件に設定(検索可能リレーション:なし)

検索条件に()で括ったSOQLの結果を検索条件に使用することができる。検索条件のSOQLにも検索条件を設定することもできる。※条件が正しければリレーションがなくても検索可能

SELECT Id, Name FROM Child__c WHERE Parent__c IN (SELECT Id FROM Parent__c)

親オブジェクトの検索

子オブジェクト一覧を出力(検索可能リレーション:参照関係、主従関係)

親オブジェクトの出力項目に子オブジェクトのクエリを利用することで、子オブジェクトのリストを出力することができる。子オブジェクトのクエリで使用するオブジェクトのAPI参照名は、参照項目作成時に指定した子オブジェクト名になる。

SELECT Id, Name, (SELECT Parent__c FROM Children__r) FROM Parent__c

子オブジェクト検索結果を検索条件に設定(検索可能リレーション:なし)

検索条件に()で括ったSOQLの結果を検索条件に使用することができる。検索条件のSOQLにも検索条件を設定することもできる。※条件が正しければリレーションがなくても検索可能

SELECT Id, Name FROM Parent__c WHERE Id IN (SELECT Parent__c FROM Child__c)