問題
開発者が、「Universal Containers」という会社名を持つリード、取引先、および取引先責任者のIdと名前(Name)を取得するために使用すべきクエリはどれですか。
A
SELECT Lead.Id, Lead.Name, Account.Id, Account.Name, Contact.Id, Contact.Name
FROM Lead, Account, Contact
WHERE CompanyName = 'Universal Containers'
B
FIND 'Universal Containers' IN Name Fields RETURNING lead(id, name), account(id, name), contact(id, name)
C
FIND 'Universal Containers' IN CompanyName Fields RETURNING lead(id, name), account(id, name), contact(id, name)
D
SELECT lead(id, name), account(id, name), contact(id, name)
FROM Lead, Account, Contact
WHERE Name = 'Universal Containers'
正解
B
FIND 'Universal Containers' IN Name Fields RETURNING lead(id, name), account(id, name), contact(id, name)
クエリエディタ用(開発者コンソール)
FIND {Universal Containers} IN NAME FIELDS RETURNING Lead(Id, Name), Account(Id, Name), Contact(Id, Name)
- ポイント
- IN NAME FIELDS を使用することで、Lead, Account, Contact の Name 項目を対象に検索できる。
- クエリエディタでは、検索語 (Universal Containers) を {} で囲む必要がある。
匿名 Apex 実行用
List<List<SObject>> searchResults =
[FIND 'Universal Containers' IN NAME FIELDS RETURNING Lead(Id, Name), Account(Id, Name), Contact(Id, Name)];
System.debug(searchResults);
- ポイント
- 匿名 Apex 実行時は、検索語を {} ではなく ‘ ‘(シングルクォート)で囲む。
解説
それぞれの選択肢の理由について説明します。
A
SELECT Lead.Id, Lead.Name, Account.Id, Account.Name, Contact.Id, Contact.Name
FROM Lead, Account, Contact
WHERE CompanyName = 'Universal Containers'
これは不正解です。SOQLでは、FROM句に複数のオブジェクトを指定することはできません。
B
FIND 'Universal Containers' IN Name Fields RETURNING lead(id, name), account(id, name), contact(id, name)
これは正解です。SOSL(Salesforce Object Search Language)を使用すると、異なるオブジェクト(リード、取引先、取引先責任者)を横断して検索できます。このクエリはName項目に「Universal Containers」を含むリード、取引先、および取引先責任者を検索するため、要件を満たしています。
C
FIND 'Universal Containers' IN CompanyName Fields RETURNING lead(id, name), account(id, name), contact(id, name)
これは不正解です。SOSLでは “CompanyName Fields” という検索範囲指定は存在しないため、このクエリは構文エラーとなります。SOSLで指定できる検索範囲は ALL FIELDS, NAME FIELDS, EMAIL FIELDS, PHONE FIELDS, SIDEBAR FIELDS のいずれかです。さらに、リードの会社名は Company、取引先の会社名は Name 項目を使用するため、検索範囲に NAME FIELDS を指定するのが適切です。
D
SELECT lead(id, name), account(id, name), contact(id, name)
FROM Lead, Account, Contact
WHERE Name = 'Universal Containers'
これは不正解です。SOQLでは、FROM句に複数のオブジェクトを指定することはできません。
次の問題へ
あわせて読みたい


【Salesforce 認定Platformデベロッパー】試験対策:第214問
問題 Universal Containers社には、カスタムオブジェクトであるEngineering_Support__cを使用して、ユーザーがエンジニアリングチームにサポートを要求できるサポートプ…
前の問題へ
あわせて読みたい


【Salesforce 認定Platformデベロッパー】試験対策:第212問
問題 データクリーンアップ戦略の一環として、AW Computing社は、関連するアカウントが削除されたときに、関連する商談レコードを自動的に削除したいと考えています。こ…
1問目から復習する
あわせて読みたい


【Salesforce 認定Platformデベロッパー】試験対策:第1問
問題 デバッグログに書き込まれるときのxの値は何ですか。 Integer x = 0; do { x = 1; x++; } while (x < 1); System.debug(x); 0 1 2 3 正解 0 1 2 3 解説 デバッ…
コメント
コメント一覧 (2件)
https://tysonblog-whitelabel.com/salesforce-dev-practice213
正解のコードは
FIND ‘Universal Containers社’ IN Name Fields RETURNING Lead(Id, Name), Account(Id, Name), Contact(Id, Name)
ではないでしょうか。
匿名さん
ご質問ありがとうございます。適切に修正いたしました。