Skip to main content

Ausführen von SOQL- und SOSL-Abfragen

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • 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
Hinweis

Hinweis

Lernen Sie auf Deutsch? Beginnen Sie die Aufgabe in einem Trailhead Playground in der Sprache Deutsch und verwenden Sie für die Navigation die in Klammern angegebenen Übersetzungen. Kopieren und fügen Sie nur die Angaben in Englisch ein, da zur Überprüfung der Aufgabe Daten in Englisch benötigt werden. Wenn Sie die Aufgabe in Ihrer deutschen Organisation nicht bestehen, empfehlen wir Ihnen folgende Vorgehensweise: (1) Stellen Sie das Gebietsschema auf USA um, (2) legen Sie Englisch als Sprache fest (Anweisungen dazu finden Sie hier) und (3) klicken Sie erneut auf die Schaltfläche "Check Challenge" (Aufgabe überprüfen).

Weitere Details dazu, wie Sie die übersetzte Trailhead-Umgebung optimal nutzen können, finden Sie unter dem Badge "Trailhead in Ihrer Sprache".

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

Bevor wir beginnen, Abfragen zu schreiben und auszuführen, müssen Sie Daten in Ihrer Salesforce-Organisation speichern, nach denen wir dann suchen können. Wir fügen deshalb nun die Kontaktdaten von drei Technikern hinzu, die das Kontrollzentrum geschickt hat, damit sie Ihr Raumschiff vom Asteroiden 2014 QO441 weg steuern.
  1. Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
  2. 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.
  3. 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')
  4. Klicken Sie auf Execute (Ausführen).

Als Ergebnis werden die Daten der Kontakte angezeigt, die in der Abteilung "Specialty Crisis Management" arbeiten.

SOQL-Abfrageergebnisse

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.

Lassen Sie uns dabei gleich auch versuchen, die Ergebnisse alphabetisch nach dem Namen zu sortieren.
  1. Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
  2. 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);
  3. Öffnen Sie nach der Ausführung des Codes das Protokoll.
  4. 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.

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.

  1. 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)
  2. Führen Sie die Abfrage aus und sehen Sie sich die Ergebnisse im Bereich "Search Results" an.SOSL-Abfrageergebnisse
Genau wie die SOQL-Abfragen können Sie auch SOSL-Suchen innerhalb von Apex-Code ausführen.
  1. Wählen Sie Debug (Debuggen) | Open Execute Anonymous Window (Fenster für die anonyme Ausführung öffnen) aus.
  2. 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);
    }
  3. Ö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.

Teilen Sie Ihr Trailhead-Feedback über die Salesforce-Hilfe.

Wir würden uns sehr freuen, von Ihren Erfahrungen mit Trailhead zu hören: Sie können jetzt jederzeit über die Salesforce-Hilfe auf das neue Feedback-Formular zugreifen.

Weitere Infos Weiter zu "Feedback teilen"