この記事の目次
SalesforceのSOQLによるリレーションクエリとサブクエリ

SalesforceのSOQLのサブクエリに比較演算子を含める

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 のテキスト文字列の文字に一致する。 式:trueSalesforceのSOQLサブクエリの活用例 準結合と反結合

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 と AccountSOQLサブクエリの参照項目の準結合
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サブクエリを活用しよう
