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:
- Welche Felder möchten Sie anzeigen?
- 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.
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.
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.
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.
Erstellen einer Abfrage mit dem Query Editor
- Klicken Sie in Ihrem Trailhead Playground auf und wählen Sie dann Developer Console aus.
- Klicken Sie auf File | Open | Objects | Contact (Datei | Öffnen | Objekte | Kontakt).
- Klicken Sie auf Open (Öffnen).
Das Objekt "Contact" (Kontakt) öffnet sich mit den Namen und Typen aller mit ihm verbundenen Felder. - 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.)
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. - Klicken Sie bei gedrückter Tastenkombination STRG+ (Windows) oder CMD+ (Mac) auf die Felder Email, Name und Languages__c.
- 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. - Klicken Sie auf Execute (Ausführen).
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.
- Kehren Sie in der Developer Console zum Query Editor zurück.
- Geben Sie am Ende der Abfrage
LIMIT 5
ein, sodass die Abfrage so lautet:SELECT Email, Name FROM Contact LIMIT 5
- 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.
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.
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?