問題
会社名「Universal Containers」を持つすべてのリード、取引先、および取引先責任者のIDおよび名前を取得するには、開発者は何を使用すればよいですか。
- FIND Universal Containers社’ IN CompanyName Fietds RETURNING lead{ld. name), accounted, name), contacted, name)
- FIND ‘Universal Containers社’ IN Name Fields RETURNING leadjid, name), accounted, name), contacted, name)
- SELECT lead(id, name). accountId, name), contacted, name) FROM Lead, Account, Contact WHERE Name = “Universal Containers社’
- SELECT Lead.id. Lead.Name, Account.Id, AccountName, Contacted, Contact.Name FROM Lead, Account, Contact WHERE CompanvName * Universal Containers社’
正解
- FIND Universal Containers社’ IN CompanyName Fietds RETURNING lead{ld. name), accounted, name), contacted, name)
- FIND ‘Universal Containers社’ IN Name Fields RETURNING leadjid, name), accounted, name), contacted, name)
- SELECT lead(id, name). accountId, name), contacted, name) FROM Lead, Account, Contact WHERE Name = “Universal Containers社’
- SELECT Lead.id. Lead.Name, Account.Id, AccountName, Contacted, Contact.Name FROM Lead, Account, Contact WHERE CompanvName * Universal Containers社’
解説
SOSL(Salesforce Object Search Language)とSOQL(Salesforce Object Query Language)は、Salesforceでデータを検索およびクエリするために使用される2つの異なる言語です。それぞれの正しい構文は以下の通りです。
- SOSL構文
FIND {検索文字列} IN {検索範囲} RETURNING {オブジェクト名(フィールド名1, フィールド名2,…)}
- 検索範囲は省略可能です。省略した場合、デフォルトの検索範囲は全項目(ALL FIELDS)になります。また、検索範囲で指定できる値は以下の通りです。
- ALL FIELDS: すべてのフィールドを検索対象とします。
- NAME FIELDS: 名前フィールドのみを検索対象とします。
- EMAIL FIELDS: メールアドレスフィールドのみを検索対象とします。
- PHONE FIELDS: 電話番号フィールドのみを検索対象とします。
- SIDEBAR FIELDS: サイドバー検索で使用されるフィールドを検索対象とします。
- 検索範囲は省略可能です。省略した場合、デフォルトの検索範囲は全項目(ALL FIELDS)になります。また、検索範囲で指定できる値は以下の通りです。
FIND 'Universal Containers社' IN Name Fields RETURNING Lead(Id, Name), Account(Id, Name), Contact(Id, Name)
- 上記のSOSLクエリは、リード、取引先、および取引先責任者の「Name」フィールドで「Universal Containers社」というテキストを検索し、それぞれのIDと名前を返します。
- SOQL構文
SELECT 項目名1, 項目名2,… FROM オブジェクト名 WHERE 条件
- オブジェクト名で指定できるのは1つのオブジェクトのみで、複数のオブジェクトは指定できません。
SELECT Id, Name FROM Account WHERE Name = 'Universal Containers社'
- 上記のSOQLクエリは、取引先オブジェクトから「Name」が「Universal Containers社」であるすべてのレコードのIDと名前を取得します。
それぞれの選択肢の理由について説明します。
□ FIND Universal Containers社’ IN CompanyName Fietds RETURNING lead{ld. name), accounted, name), contacted, name)
これは不正解です。この文はSOSL(Salesforce Object Search Language)の構文ですが、いくつかの問題があります。まず、クエリ内の検索文字列「Universal Containers社」は引用符で囲む必要があります。また、「CompanyName Fields」は存在しないため、適切なフィールドグループ(例えば「NAME FIELDS」)を指定する必要があります。さらに、リード、取引先、および取引先責任者のオブジェクトには「CompanyName」という名前の標準フィールドは存在しません。代わりに「Name」フィールドを使用する必要があるでしょう。
□ FIND ‘Universal Containers社’ IN Name Fields RETURNING leadjid, name), accounted, name), contacted, name)
これは正解です。この文は正しいSOSLクエリで、リード、取引先、および取引先責任者の「Name」フィールドで「Universal Containers社」というテキストを検索し、それぞれのIDと名前を返します。
□ SELECT lead(id, name). accountId, name), contacted, name) FROM Lead, Account, Contact WHERE Name = “Universal Containers社’
これは不正解です。この文はSOQLの構文に似ていますが、正しくない構文です。SOQLでは複数のオブジェクトを同時にクエリすることはできません。
□ SELECT Lead.id. Lead.Name, Account.Id, AccountName, Contacted, Contact.Name FROM Lead, Account, Contact WHERE CompanvName * Universal Containers社’
これは不正解です。この文はSOQLの構文に似ていますが、正しくない構文です。SOQLでは複数のオブジェクトを同時にクエリすることはできず、また「CompanyName」はリード、取引先、取引先責任者のすべてのオブジェクトに存在する項目ではありません。
コメント