Ausführen von SOQL- und SOSL-Abfragen
Lernziele
- Ausführen einer SOQL-Abfrage mit dem Query Editor oder in Apex-Code
- Ausführen einer SOSL-Suche mit dem Query Editor oder in Apex-Code
Was ist eine SOQL-Abfrage?
SOQL steht für Salesforce Object Query Language. Sie können SOQL zum Lesen von Informationen verwenden, die in der Datenbank Ihrer Organisation gespeichert sind. Die Syntax von SOQL ähnelt SQL (Structured Query Language).
SOQL-Abfragen können in Apex-Code oder im Query Editor der Developer Console geschrieben und ausgeführt werden.
Ausführen einer SOQL-Abfrage
- Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
- Kopieren Sie den folgenden Code, fügen Sie ihn ein und führen Sie ihn aus. Dieser Code fügt die Kontaktdaten von drei Technikern zum Objekt "Contact (Kontakt)" in Ihrer Datenbank hinzu.
// 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;
Jetzt können wir den Query Editor verwenden, um eine SOQL-Abfrage zu schreiben und auszuführen, die nach diesen Technikern sucht. SOQL-Abfragen suchen Daten in spezifischen Objekten. Sie können eine optionale Bedingung in der WHERE-Klausel angeben, um die Suche einzugrenzen. - Geben Sie die folgende Abfrage in die Registerkarte "Query Editor (Abfrage-Editor)" ein.
SELECT Name, Phone, Email, Title FROM Contact WHERE (Department = 'Specialty Crisis Management')
- Klicken Sie auf Execute (Ausführen).
Als Ergebnis werden die Daten der Kontakte angezeigt, die in der Abteilung "Specialty Crisis Management" arbeiten.
Sie können eine andere SOQL-Abfrage verwenden, um nach Kontakten in anderen Abteilungen zu suchen oder, um festzustellen, ob jemand anders Datensätze für weitere Techniker angelegt hat. Um eine Abfrage erneut auszuführen, klicken Sie im Bereich "Query Results (Abfrageergebnisse)" auf Refresh Grid (Raster aktualisieren).
Eine SOQL-Abfrage, die Sie mithilfe von Apex-Code ausführen, wird als Inline-SOQL-Abfrage bezeichnet. Sehen wir uns an, wie Sie die Developer Console verwenden können, um mit einer Inline-SOQL-Abfrage nach Kontakten aus der Abteilung "Specialty Crisis Management" zu suchen.
- Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
- Geben Sie folgenden Code ein:
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);
- Öffnen Sie nach der Ausführung des Codes das Protokoll.
- Um nur die USER_DEBUG-Meldungen anzuzeigen, wählen Sie Debug Only (Nur debuggen) aus. Die Ergebnisse zeigen die Anzahl der zurückgegebenen Accounts und die Kontaktdetails in alphabetischer Reihenfolge an.
Wenn Sie Ihr Wissen über SOQL-Abfragen vertiefen möchten, sehen Sie sich das Modul Apex – Grundlagen und Datenbank an.
Was ist eine SOSL-Suche?
SOSL (Salesforce Object Search Language) ist eine Sprache, die Textsuchvorgänge in Datensätzen durchführt. Im Gegensatz zu SOQL kann SOSL mehrere Objekttypen gleichzeitig abfragen. SOSL kann zudem eine Wortübereinstimmung für den Abgleich mit Feldern verwenden, während SOQL den exakten Ausdruck erfordert.
Wenn Sie eine SOSL-Suche nach Kontaktdatensätzen durchführen und dabei das Wort "Crisis" angeben, werden alle Kontaktfelder durchsucht und alle Datensätze zurückgegeben, die dieses Wort enthalten. Wenn Sie dasselbe mit einer SOQL-Abfrage versuchen, müssen Sie die zu durchsuchenden Felder sowie ein zu suchendes Wort bzw. einen zu suchenden Ausdruck angeben. Sie können auch LIKE
oder Platzhalter verwenden, um SOQL- oder SOSL-Suchen einzugrenzen.
Ausführen von SOSL-Suchen
- Geben Sie die folgende SOSL-Abfrage in die Registerkarte "Query Editor (Abfrage-Editor)" ein. Beachten Sie, dass der Abteilungsname "Specialty Crisis Management" in der Abfrage nur teilweise angegeben ist.
FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
- Führen Sie die Abfrage aus und sehen Sie sich die Ergebnisse im Bereich "Search Results" an.
- Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
- Führen Sie den folgenden Code aus:
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); }
- Öffnen Sie das Protokoll und wählen Sie die Option Debug Only (Nur debuggen) aus.
Im "Execution Log (Ausführungsprotokoll)" sind die Namen der Techniker aufgeführt.
Weitere Informationen über SOSL-Suchen und ihre Funktionsweise finden Sie im Modul Apex – Grundlagen und Datenbank.
Während Sie sich mit SOQL und SOSL vergnügt haben, haben die Techniker, deren Datensätze Sie gesucht haben, Ihr Raumschiff aus der Flugbahn des Asteroiden gesteuert. Sieht so aus, als sei das Befehligen eines Raumschiffs gar nicht so schwer: Sie brauchen nur eine gute Konsole und müssen lernen zu delegieren!
Nachdem die Kollision mit dem Asteroiden 2014 QO441 jetzt abgewendet ist, beschließen Sie, die Raumstation auf Neptun anzusteuern und eine wohlverdiente Pause einzulegen. Wenn Sie mit den verschiedenen Funktionen und Merkmalen der Developer Console vertraut sind, können Sie auch Ihre Organisation erfolgreich durch viele Missionen steuern.