SOQL クエリと SOSL クエリの実行
学習の目的
- クエリエディターを使用して、または Apex コードで SOQL クエリを実行する。
- クエリエディターを使用して、または Apex コードで SOSL 検索を実行する。
SOQL クエリとは?
SOQL とは、Salesforce オブジェクトクエリ言語のことです。SOQL を使用して、組織のデータベースに保存された情報を読み込むことができます。SOQL の構文は SQL (構造化クエリ言語) と似ています。
Apex コードまたは開発者コンソールのクエリエディターで SOQL クエリを記述して実行できます。
SOQL クエリの実行
- [Debug (デバッグ)] | [Open Execute Anonymous Window (実行匿名ウィンドウを開く)] を選択します。
- 次のコードをコピーして貼り付けてから、実行します。このコードは、3 名の制御エンジニアの連絡先の詳細をデータベースの Contact (連絡先) オブジェクトに追加するものです。
// Add first contact and related details Contact contact1 = new Contact( Firstname='Quentin', Lastname='Foam', Phone='(415)555-1212', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Solar Arrays', Email='qfoam@trailhead.com'); insert contact1; // Add second contact and related details Contact contact2 = new Contact( Firstname='Vega', Lastname='North', Phone='(416)556-1312', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Propulsion', Email='vnorth@trailhead.com'); insert contact2; // Add third contact and related details Contact contact3 = new Contact( Firstname='Palma', Lastname='Sunrise', Phone='(554)623-1212', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Radiators', Email='psunrise@trailhead.com'); insert contact3;
追加したら、クエリエディターを使用して、これらの制御エンジニアを検索する SOQL クエリを記述して実行できます。SOQL クエリは、特定のオブジェクトのデータを検索します。WHERE 句に任意の条件を追加すれば、検索を絞り込むことができます。 - 次のクエリを [Query Editor (クエリエディター)] タブに入力します。
SELECT Name, Phone, Email, Title FROM Contact WHERE (Department = 'Specialty Crisis Management')
- [Execute (実行)] をクリックします。
結果に、特殊危機管理部門に属する 3 名の連絡先の詳細が表示されます。
別の SOQL クエリを使用して、他の部門の連絡先を検索したり、誰かが他の制御エンジニアのレコードを作成していないかどうかを確認したりすることもできます。クエリを再実行するには、[Query Results (クエリ結果)] パネルの [Refresh Grid (グリッドを更新)] をクリックします。
Apex コードを使用して実行する SOQL クエリを、インライン SOQL クエリといいます。次に開発者コンソールで、インライン SOQL クエリを使用して、特殊危機管理部門に属する連絡先を検索する方法を見てみましょう。
- [Debug (デバッグ)] | [Open Execute Anonymous Window (実行匿名ウィンドウを開く)] を選択します。
- 次のコードを入力します。
Contact[] theseContacts = [SELECT Name, Phone, Email, Description FROM Contact WHERE (Department='Specialty Crisis Management') ORDER BY Name]; // Log a count of how many contacts were found System.debug(theseContacts.size() + ' contact(s) returned.'); // Log all values in the array of contacts System.debug(theseContacts);
- コードが実行された後にログが開きます。
- USER_DEBUG メッセージのみを表示する場合は、[Debug Only (デバッグのみ)] を選択します。結果に、返された取引先の数と連絡先の詳細がアルファベット順に表示されます。
SOQL クエリについての詳細は、「Apex の基礎とデータベース」モジュールを参照してください。
SOSL 検索とは?
SOSL (Salesforce オブジェクト検索言語) は、レコード内のテキスト検索を実行する言語です。SOSL は、SOQL とは異なり、同時に複数の種別のオブジェクトにクエリを実行できます。また、SOSL は単語の一致を使用して項目の一致を見つけるのに対し、SOQL は語句が完全に一致している必要があります。
「Crisis (危機)」という単語を使用して連絡先レコードに対する SOSL 検索を実行した場合、すべての連絡先項目が検索され、この単語を含むすべてのレコードが返されます。他方、SOQL クエリで同じ検索をする場合は、検索対象の項目と検索する完全な単語または語句を指定する必要があります。SOQL 検索でも SOSL 検索でも、LIKE
やワイルドカードを使用して絞り込むことができます。
SOSL 検索の実行
- [Query Editor (クエリエディター)] タブに、次の SOSL クエリを入力します。クエリには Specialty Crisis Management (特殊危機管理) 部門の名称の一部しか示されていません。
FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
- クエリを実行して、[Search Results (検索結果)] ペインの結果を確認します。
- [Debug (デバッグ)] | [Open Execute Anonymous Window (実行匿名ウィンドウを開く)] を選択します。
- 次のコードを実行します。
List<List<sObject>> searchList = [FIND 'Crisis' IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Description)]; Contact[] searchContacts = (Contact[])searchList[0]; System.debug('Found the following contacts:'); for (Contact c : searchContacts) { System.debug(c.LastName + ', ' + c.FirstName); }
- ログを開き、[Debug Only (デバッグのみ)] オプションを選択します。
実行ログに制御エンジニアの氏名がリストされます。
SOSL 検索の活用についての詳細は、「Apex の基礎とデータベース」モジュールを参照してください。
SOQL と SOSL を試しながらレコードを検索している間に、検索していた当の制御エンジニアが宇宙船を小惑星の軌道に近づかないように操縦していました。結局のところ、宇宙船の指揮を執るというのはさほど難しいことではないようです。必要なものは適切なコンソールと、部下に任せる能力の習得です!
小惑星 2014 QO441 との衝突を回避したところで、海王星宇宙ステーションに着陸して待ち望んだ休憩を取ることにします。開発者コンソールの各種機能に関する知識があれば、数々の任務をこなしながら組織を成功へと導くことができます。