Skip to main content

Erste Schritte mit SOQL-Abfragen

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:

  • Erstellen einer zulässigen SOQL-Abfrage unter Verwendung erforderlicher Klauseln
  • Filtern von Abfrageergebnissen anhand mehrerer Bedingungen
  • Sortieren von Abfrageergebnissen

Wenn dies Ihre erste Station auf dem Trail Entwickeln von Apex-Programmierkenntnissen ist, sind Sie schon zu weit. Gehen Sie einen Schritt zurück und verdienen Sie sich die Badges Apex – Grundlagen für Administratoren und Objektorientierte Programmierung für Administratoren, ehe Sie mit diesem Modul fortfahren.

Sie haben diese Badges bereits erworben? Ausgezeichnete Arbeit! Nachdem Sie nun ein grundlegendes Verständnis für das Erstellen von Klassen, Variablen und sObjects haben, ist es an der Zeit, Salesforce Object Query Language, auch bekannt als SOQL (ausgesprochen: Sockl), kennenzulernen.

Was ist SOQL?

SOQL ist eine Sprache, mit der Datensätze aus einer Salesforce-Datenbank abgerufen werden können. In Objektorientierte Programmierung für Administratoren haben Sie gelernt, dass Sie DML-Anweisungen (Data Manipulation Language) verwenden können, um Datensätze einzufügen, zu aktualisieren und zu löschen. Was aber, wenn Sie Daten abrufen möchten, die bereits in der Datenbank vorhanden sind? SOQL erleichtert Ihnen das Abrufen von Daten.

Das Erstellen von SOQL-Abfragen ähnelt dem Erstellen eines Berichts. Wenn Sie einen Bericht erstellen, beantworten Sie Fragen wie diese:

  1. Welche Felder möchten Sie anzeigen?
  2. Wo befinden sich diese Felder?

Die gleichen Fragen stellen Sie, wenn Sie eine SOQL-Abfrage erstellen. In einer Abfrage sind die Antworten auf diese Fragen die Felder und das Objekt.

SELECT Name, Email FROM Contact. SELECT und FROM sind SOQL-Schlüsselwörter. 'Name' und 'Email' sind Felder und 'Contact' ist ein Standardobjekt von Salesforce.

Diese Abfrage enthält SOQL-Schlüsselwörter (SELECT und FROM), Datensätze (Name und Email) und ein Objekt (das Standardobjekt Contact).

Was macht diese Abfrage? Sie ruft bestimmte Informationen zu Kontaktdatensätzen in der Datenbank ab. Lassen Sie uns untersuchen, wie diese Teile zusammenpassen und einige Übungsabfragen schreiben. Zuerst werfen wir einen Blick auf die verschiedenen Teile einer SOQL-Abfrage.

Erforderliche SOQL-Klauseln

SELECT

Die Grundlage jeder SOQL-Abfrage bilden zwei Klauseln: SELECT und FROM. Stellen Sie sich eine Klausel wie ein Teil eines Puzzles vor. Sie ist ein bestimmter Teil einer vollständigen Abfrage.

SELECT Name, Email FROM Contact. 'SELECT Name, Email' ist die SELECT-Klausel.

Jede SOQL-Abfrage hat eine SELECT-Klausel, die mit dem Schlüsselwort SELECT beginnt. Die SELECT-Klausel gibt ein oder mehrere (durch Komma getrennte) Felder in einem Salesforce-Datensatz an. Diese Beispielabfrage gibt zwei Felder zurück: Name und Email.

Ein Hinweis zu Feldnamen: Wenn Sie als Administrator mit einem anderen Administrator sprechen, verweisen Sie wahrscheinlich auf ein Feld über dessen Feldbezeichnung. Aber im Code arbeiten Entwickler stattdessen mit API-Namen. Verwenden Sie also in Ihren SOQL-Abfragen immer API-Feldnamen und keine Feldbezeichnungen. Wenn Sie nicht sicher sind, wie der API-Name eines Felds lautet, gibt es Möglichkeiten, ihn herauszufinden. Mehr dazu später in diesem Modul.

FROM

Die zweite Klausel, die zum Erstellen einer SOQL-Abfrage erforderlich ist, ist FROM.

SELECT Name, Email FROM Contact. 'FROM Contact' ist die FROM-Klausel.

Beginnend mit dem Schlüsselwort FROM gibt die FROM-Klausel ein Objekt in Ihrer Salesforce-Datenbank an. In diesem Fall benötigen wir Daten aus dem Objekt Contact. Schauen wir uns an, wie die Daten aussehen, wenn wir die Abfrage ausführen.

Mit Trail Together einem Dozenten folgen

Möchten Sie bei diesem Schritt einem Experten folgen? Schauen Sie sich dieses Video an, das Teil der Reihe "Trail Together" auf Trailhead Live ist. Einen Link zur vollständigen Sitzung finden Sie im Abschnitt "Ressourcen".

Sind Sie bereit für praktische Übungen mit SOQL?

In dieser Lerneinheit zeigen wir Ihnen die Schritte zum Erstellen einer SOQL-Abfrage im Query Editor (Abfrage-Editor) in der Developer Console (Entwicklerkonsole). In dieser Einheit gibt es keine praktische Aufgabe. Aber wenn Sie die Schritte nachvollziehen und ausprobieren möchten, erstellen Sie nun einen neuen Trailhead Playground. Im Modul Trailhead Playground-Management erfahren Sie, wie das geht. Es dauert meist drei bis vier Minuten, bis Salesforce Ihren Trailhead Playground erstellt hat. Sie nutzen den Playground auch zum Absolvieren der praktischen Aufgaben im weiteren Verlauf des Moduls.

Hinweis

Ja, Sie brauchen wirklich einen brandneuen Trailhead Playground! Wenn Sie eine vorhandene Organisation oder einen bestehenden Playground verwenden, kann dies zu Problemen beim Absolvieren der Aufgaben führen.

Erstellen einer Abfrage mit dem Query Editor

  1. Klicken Sie in Ihrem Trailhead Playground auf Setup und wählen Sie dann Developer Console aus.
  2. Klicken Sie auf File | Open | Objects | Contact (Datei | Öffnen | Objekte | Kontakt).
    Im Fenster "Open" (Öffnen) werden der Typ der Einheit (Hervorhebung von "Objects") und seine Einheiten (Hervorhebung von "Contact") aufgelistet.
  3. Klicken Sie auf Open (Öffnen).
    Das Objekt "Contact" (Kontakt) öffnet sich mit den Namen und Typen aller mit ihm verbundenen Felder.
  4. Wählen Sie im unteren Bereich die Registerkarte Query Editor (Abfrage-Editor) aus. (Falls Sie die Registerkarten nicht gleich sehen, klicken Sie unten im Fenster auf den nach oben zeigenden Pfeil.)Registerkarte 'Query Editor' mit drei Fensterbereichen
    Der "Query Editor" (Abfrage-Editor) besteht aus drei Abschnitten. Im linken oberen Abschnitt (1) wird die Abfrage angezeigt. Dort können Sie die Abfrage bearbeiten. Im linken unteren Abschnitt (2) werden Fehler angezeigt. Und im rechten Abschnitt (3) wird ein Verlauf der ausgeführten SOQL-Abfragen gespeichert.
  5. Klicken Sie bei gedrückter Tastenkombination STRG+ (Windows) oder CMD+ (Mac) auf die Felder Email, Name und Languages__c.
  6. Klicken Sie auf Query (Abfragen).
    Die SOQL-Abfrage, die auf dem von Ihnen ausgewählten Objekt und den Feldern basiert, wird im Query Editor angezeigt. Beachten Sie, dass, wenn Sie ein Feld im Query Builder (Abfrage-Generator) auswählen, der Query Builder den API-Namen des Feldes automatisch in die SOQL-Abfrage einfügt. Dank dieses Tools müssen Sie sich keine API-Namen mehr merken oder danach suchen.
  7. Klicken Sie auf Execute (Ausführen).
    Die Abfrage gibt die Felder 'Id', 'Email', 'Name' und 'Languages__c' zurück.

Nach Ausführung der Abfrage enthalten die Ergebnisse genau das, was gewünscht wurde. Und wenn Sie den Query Editor verwenden, wird die ID als Bonus zurückgegeben. Echt cool, oder?

Optionale SOQL-Klauseln

Die SELECT- und FROM-Klausel sind erforderlich, aber SOQL bietet auch optionale Klauseln zur Präzisierung Ihrer Abfrage.

Die Beispielabfragen, die Sie in Ihrem Trailhead Playground erstellen, geben eine relativ kleine Anzahl von Datensätzen zurück. Die letzte Abfrage gab 20 Datensätze zurück. Aber was wäre, wenn es Tausende von Datensätzen gäbe? Die für die Verarbeitung dieser Daten benötigte Rechenleistung wäre beträchtlich. Wäre es nicht praktisch, wenn SOQL eine Möglichkeit böte, eine Teilmenge aller Datensätze zurückzugeben? Zum Glück ist das der Fall.

WHERE

Die WHERE-Klausel legt die Bedingungen fest, die ein Datensatz erfüllen muss, um ausgewählt und zurückgegeben zu werden. Verwenden Sie die WHERE-Klausel auf die gleiche Weise wie Filter, um die in einer Listenansicht oder einem Bericht angezeigten Daten einzugrenzen. Angenommen, wir suchen nach einem Kontakt, dessen Vorname Stella ist, dann können wir WHERE FirstName = 'Stella' an das Ende unserer Abfrage anfügen, etwa so:

SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'

Sie können die WHERE-Klausel auch so festlegen, dass nach mehr als einer Bedingung gefiltert wird. Dazu gibt es mehrere Möglichkeiten mithilfe dreier Operatoren: AND, OR und IN. Sehen wir uns einige Beispiele an.

AND
Geben Sie AND an, um Datensätze zurückzugeben, die zwei Bedingungen erfüllen. Diese Abfrage gibt alle Datensätze mit dem Vornamen Stella und dem Nachnamen Pavlova zurück.


SELECT Name, Email
FROM Contact
WHERE FirstName = 'Stella' AND LastName = 'Pavlova'

OR
Geben Sie OR an, um Datensätze zurückzugeben, die eine von zwei Bedingungen erfüllen. Diese Abfrage gibt Datensätze mit dem Nachnamen James oder Barr zurück.


SELECT Name, Email
FROM Contact
WHERE LastName = 'James' OR LastName = 'Barr'

IN
Geben Sie IN an, um Datensätze zurückzugeben, die mindestens eine von drei oder mehr Bedingungen erfüllen. Die IN-Klausel wird üblicherweise eingesetzt, um die Werte einer Auswahlliste oder Werte aus einer LIST (Liste) oder einem SET (Menge) zurückzugeben. IN vereinfacht eine Abfrage, die sonst viele OR-Bedingungen enthalten würde. Diese Abfrage gibt alle Datensätze mit dem Nachnamen James, Barr, Nedaerk oder Forbes zurück.

SELECT Name, Email FROM Contact
WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes')

LIMIT

Mit dem Schlüsselwort LIMIT legen Sie die maximale Anzahl der zurückzugebenden Datensätze fest. LIMIT ist hilfreich, wenn Sie Tests durchführen und nicht warten möchten, bis eine Abfrage ein großes Datenset verarbeitet hat. Sobald Sie mehr über SOQL erfahren, werden Sie weitere Möglichkeiten entdecken, um zu vermeiden, dass zu viele Datensätze zurückgegeben werden, aber bis dahin ist LIMIT die einfache Lösung. Lassen Sie uns unsere Abfrage mit einem Limit versehen.

  1. Kehren Sie in der Developer Console zum Query Editor zurück.
  2. Geben Sie am Ende der Abfrage LIMIT 5 ein, sodass die Abfrage so lautet:
    SELECT Email, Name FROM Contact LIMIT 5
  3. Klicken Sie auf Execute (Ausführen).

Im Bereich "Query Results" (Abfrageergebnisse) werden fünf Ergebnisse angezeigt

ORDER BY

Nachdem Sie die Menge der Ergebnisse im Griff haben, wie können Sie diese Ergebnisse nun organisieren? Mit der ORDER BY-Klausel können Sie die Ergebnisse nach dem Wert eines bestimmten Felds sortieren. Geben Sie optional einen Qualifizierer in einer ORDER BY-Klausel an, um ähnlich wie bei einer Kalkulationstabelle eine aufsteigende (Standard) oder absteigende Reihenfolge festzulegen. Wenn Sie schließlich viele leere Feldwerte haben, verwenden Sie den Qualifizierer NULLS, um alle NULL-Werte entweder an erster (Standard) oder letzter Stelle zu gruppieren.


Syntax
Beschreibung
Beispiel
ASC
Gibt Ergebnisse in aufsteigender Reihenfolge zurück
SELECT Name, Email FROM Contact
ORDER BY Name ASC
LIMIT 5

DESC
Gibt Ergebnisse in absteigender Reihenfolge zurück

SELECT Name, Email FROM Contact
ORDER BY Email DESC
LIMIT 5

NULLS
FIRST | LAST
Gibt NULL-Datensätze am Anfang (NULLS FIRST) oder am Ende (NULLS LAST) zurück.
SELECT Name, Email FROM Contact
ORDER BY Email
NULLS LAST

Im Beispiel für ASC gibt SELECTName, Email FROM Contact ORDER BY Name ASC LIMIT 5 die Felder Name und Email von fünf Kontakten zurück, sortiert in aufsteigender Reihenfolge nach Namen.

Abfrageergebnisse mit Auflistung der Felder 'Name' (in aufsteigender Reihenfolge) und 'Email' im Objekt 'Contact'.

Im Beispiel für NULLS gibt SELECTSELECT Name, Email FROM Contact ORDER BY Email NULLS LAST den Namen und die E-Mail-Adresse in aufsteigender Reihenfolge nach E-Mail-Adresse zurück (da "Aufsteigend" die Standardsortierreihenfolge ist). Die Datensätze ohne E-Mail-Adresse sind am Ende gruppiert.

Abfrageergebnisse mit Auflistung der Felder 'Name' und 'Email'.

Nach dieser Einführung in die Leistungsfähigkeit von SOQL können Sie jetzt riesige Datensets abrufen, Limits festlegen, um sehr spezifische Ergebnisse zu erhalten, und die zurückgegebenen Daten nach Ihren Vorstellungen organisieren. Echt praktisch, oder?

Ressourcen

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"