SalesforceのSOQLサブクエリを活用して、複雑なクエリを作成する方法
SalesforceのSOQLによるリレーションクエリとサブクエリ
SalesforceのSOQLのリレーションクエリとサブクエリを利用して、オブジェクト間の親-子のリレーションまたは子-親のリレーションを横断して、結果を絞りこむことができます。 リレーションクエリは、標準オブジェクトとカスタムオブジェクトでクエリを実行すると呼ばれる構文です。一度に複数のオブジェクト種別へのクエリを実行できます。 例えば、リレーションクエリでは、ある種別のオブジェクトから、別の種別のオブジェクトに適用される条件による絞りこみができます。この場合の“別の種別のオブジェクトに適用される条件”がサブクエリになります。
SalesforceのSOQLのサブクエリに比較演算子を含める
SalesforceのSOQL クエリのSELECT ステートメントでは、WHERE 句の項目式に比較演算子を含むことができます。これにより、準結合と反結合のクエリを作成できます。
SOQLのサブクエリに使用できる比較演算子の例
SalesforceのSOQLのサブクエリで使用できる、比較演算子を紹介します。 比較演算子は、条件に合致する場合に決められた式を返します。文字列を比較する場合、大文字と小文字が区別される一意の項目だけで、大文字と小文字が区別されます。それ以外の項目では、大文字と小文字は区別されません。 ・=(Equals) 条件:fieldName の値が式の value に一致する。 式:true ・!=(Not equals) 条件:f ieldName の値が指定した value に一致しない 式:true ・<(Less than) 条件:fieldName の値が指定した value より小さい。 式:true ・>(Greater than) 条件:fieldName の値が指定した value より大きい。 式:true ・IN(IN) 条件:値が WHERE 句の値のいずれかに等しい。 式:true ・LIKE(Like) 式:true 条件:fieldName の値が指定した value のテキスト文字列の文字に一致する。 式:true
SalesforceのSOQLサブクエリの活用例 準結合と反結合
SalesforceのSOQLでは、サブクエリのINやNOT IN 句内の値リストを置き換えることにより、主キーであるID項目、もしくは外部キーである参照項目による絞り込みを行えます。これらは準結合、反結合と呼ばれ、返されるレコードを制限します。 準結合:IN 句の別のオブジェクトのサブクエリ 反結合:NOT IN 句の別のオブジェクトのサブクエリ ここでは、SOQLクエリのIN を使用して、準結合と反結合の活用例を紹介します。INでは、値のセットを、同じオブジェクトの別の項目で指定されている項目の値を参照できます。サンプルを紹介します。
SELECT Name FROM Account
WHERE BillingState IN ('Sample1', ' Sample2')
SalesforceのSOQLサブクエリの活用例① ID 項目による絞りこみ
SOQLサブクエリでのID項目による絞り込みでは、親-子の準結合もしくは反結合を作成できます。ここでは、Account(親)とOpportunity (子)を例に挙げて説明します。
SOQLサブクエリのID 項目の準結合
SOQLサブクエリのID 項目による準結合の活用例を紹介します。WHERE 句に準結合を含みます。 このサンプルは、関連づけられている商談(Opportunity)が不成立となっている取引先 ID を返します。サブクエリは、比較対象の項目と同じ種別の項目を返します。IN 句の左にあるオペランド IdがID 項目をさしています。
SELECT Id, Name
FROM Account
WHERE Id IN
( SELECT AccountId
FROM Opportunity
WHERE StageName = 'Closed Lost'
SOQLサブクエリのID 項目の反結合
SOQLサブクエリのID 項目による反結合の活用例として、進行中の商談がないすべての取引先の取引先 ID を返す、反結合のサンプルを紹介します。
SELECT Id
FROM Account
WHERE Id NOT IN
(
SELECT AccountId
FROM Opportunity
WHERE IsClosed = false
)
SalesforceのSOQLサブクエリの活用例② 参照項目による絞りこみ
参照項目による絞りこみでは、子-子および子-親のリレーションに対して、それぞれ準結合と反結合を作れます。 下の例のように、Contact(子)もしくはOpportunity(子)とAccount(親)だけでなく、Contact(子)とOpportunity(子)のような子と子の間でも作成できます。 ・子-子の準結合もしくは反結合 例)Contact と Opportunity ・子-親の準結合もしくは反結合 例)Opportunity と Account
SOQLサブクエリの参照項目の準結合
SOQLサブクエリの参照項目による準結合の活用例として、Sample1に該当する取引先責任者の ToDo ID を返す、サンプルを紹介します。 IN 句の左にあるオペランド WhoId が参照項目をさします。WhoId により、取引先責任者もしくはリードを参照できるため多態的な参照項目になりますが、参照結果はサブクエリによって取引先責任者に制限されます。
SELECT Id
FROM Task
WHERE WhoId IN
(
SELECT Id
FROM Contact
WHERE MailingCity = 'Sample1'
)
SOQLサブクエリの参照項目の反結合
SOQLサブクエリの参照項目による反結合の例として、Opportunity(子)とContact(子)の反結合のサンプルを消化します。 このサンプルでは、供給元が Webを除く取引先責任者の商談 ID すべてを返します。
SELECT Id
FROM Opportunity
WHERE AccountId NOT IN
(
SELECT AccountId
FROM Contact
WHERE LeadSource = 'Web'
)
SalesforceのSOQLサブクエリを活用しよう
今回は、SalesforceのSOQLのサブクエリについて説明しました。 SOQLのサブクエリを使用して、Salesforceのオブジェクトを横断してクエリすることができます。 ここで紹介したのはごく一部の例です。SOQLのサブクエリを活用しましょう。
この記事の監修者・著者
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
- 2024-06-30キャリアインフラエンジニアはやめとけって本当?きつい理由を口コミを交えて解説
- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。