Premiers pas avec les requêtes SOQL
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Créer une requête SOQL valide à l’aide des clauses obligatoires
- Filtrer les résultats de requête avec plusieurs conditions
- Trier les résultats de requête
S’il s’agit de vos premiers pas dans le parcours Développement des compétences relatives au code Apex, vous êtes allé trop loin. Revenez un peu en arrière pour obtenir les badges Bases d’Apex pour les administrateurs et Programmation orientée objet pour les administrateurs avant de poursuivre dans ce module.
Vous avez déjà obtenu ces badges ? Excellent travail ! Maintenant que vous connaissez les concepts de base de la création des classes, des variables et des sObjects, il est temps d’en savoir plus sur le Salesforce Object Query Language, également connu sous le nom de langage SOQL (prononcé « sockel »).
Qu'est-ce que le SOQL ?
SOQL est un langage qui obtient des données d’enregistrement depuis une base de données Salesforce. Dans Programmation orientée objet pour les administrateurs, vous avez appris que vous pouvez utiliser des instructions DML (Data Manipulation Language) pour insérer, mettre à jour et supprimer des enregistrements. Mais que se passe-t-il si vous souhaitez obtenir des données qui se trouvent déjà dans la base ? SOQL simplifie la récupération des données.
La création de requêtes SOQL est semblable à la création d’un rapport. Lorsque vous créez un rapport, vous répondez à des questions telles que :
- Quels sont les champs que je souhaite afficher ?
- Où sont situés ces champs ?
Vous vous posez les mêmes questions lorsque vous créez une requête SOQL. Dans une requête, les réponses à ces questions sont les champs et l’objet.
Cette requête contient des mots-clés SOQL (SELECT
et FROM
), des champs d’enregistrement (Name
et Email
) et un objet (l’objet standard Contact
).
Que fait cette requête ? Elle récupère (obtient) des informations spécifiques au sujet des enregistrements de contact dans la base de données. Examinons comment ces éléments fonctionnent ensemble et exerçons-nous à écrire des requêtes. Tout d’abord, nous allons examiner les sections obligatoires d’une requête SOQL.
Clauses SOQL obligatoires
SELECT
À la base de toute requête SOQL se trouvent deux clauses : la clause SELECT et la clause FROM. Imaginez une clause comme la pièce d’un puzzle. Elle représente une partie d’une requête complète.
Chaque requête SOQL a une clause SELECT qui commence par le mot-clé SELECT
. La clause SELECT spécifie un ou plusieurs champs (séparés par des virgules) d’un enregistrement Salesforce. Cet exemple de requête renvoie deux champs : Name
et Email
.
Remarque concernant les noms de champs : en tant qu’administrateur, lorsque vous échangez avec un autre administrateur, vous utilisez probablement les étiquettes de champs pour faire référence aux champs. Mais quand ils codent, les développeurs utilisent les noms d’API. Ainsi, dans vos requêtes SOQL, utilisez toujours les noms d’API des champs, et non les étiquettes de champs. Si vous n’êtes pas certain du nom d’API d’un champ, ne vous inquiétez pas : il existe des moyens de le connaître. Nous reviendrons sur cet aspect ultérieurement dans ce module.
FROM
La deuxième clause obligatoire pour créer une requête SOQL est la clause FROM.
À partir du mot-clé FROM
, la clause FROM spécifie un objet de votre base de données Salesforce. Dans ce cas, nous souhaitons obtenir des données de l’objet Contact
. Voyons à quoi ressemblent les données lorsque nous exécutons la requête.
Vidéo de démonstration Trail Together
Vous souhaitez être guidé pas à pas par un expert pendant que vous travaillez sur cette étape ? Regardez cette vidéo qui fait partie de la série Trail Together sur Trailhead Live. Vous trouverez un lien vers la session complète dans la section Ressources.
Utilisation pratique de SOQL
Dans cette unité, nous vous montrons les étapes de création d’une requête SOQL dans l’éditeur de requête de la Developer Console. Cette unité ne comporte pas de défi pratique, mais si vous voulez essayer de suivre les étapes, créez un autre Trailhead Playground avant de commencer. Consultez le module Gestion des Trailhead Playgrounds pour obtenir plus d’informations à ce sujet. Il faut généralement 3 à 4 minutes à Salesforce pour créer votre Trailhead Playground. Vous utilisez également le Playground au moment de relever les défis pratiques ultérieurement dans ce module.
Création d’une requête à l’aide de l’éditeur de requête
- Dans votre organisation Trailhead Playground, cliquez sur et sélectionnez Developer Console.
- Cliquez sur Fichier | Ouvrir | Objets | Contact.
- Cliquez sur Ouvrir.
L’objet Contact s’ouvre et répertorie les noms et types de tous les champs qui lui sont associés. - Dans le panneau inférieur, sélectionnez l’onglet Éditeur de requête. (Si les onglets n’apparaissent pas, cliquez sur la flèche vers le haut située en bas de la fenêtre.)
L’éditeur de requête comporte trois sections. La section en haut à gauche (1) affiche la requête. Vous pouvez modifier la requête à cet endroit. La section en bas à gauche (2) affiche les erreurs. Et la section à droite (3) contient l’historique des requêtes SOQL exécutées. - En utilisant CTRL + clic (Windows) ou CMD + clic (Mac), sélectionnez les champs Email, Name et Languages__c.
- Cliquez sur Requête.
La requête SOQL, reposant sur l’objet et les champs que vous avez sélectionnés, s’affiche dans l’éditeur de requête. Vous remarquerez que lorsque vous sélectionnez un champ dans le générateur de requêtes, ce dernier insère automatiquement le nom d’API du champ dans la requête SOQL. Avec cet outil, il n’est pas nécessaire de mémoriser les noms d’API ou de les rechercher. - Cliquez sur Execute (Exécuter).
Une fois la requête exécutée, les résultats affichent exactement ce qui est demandé. De plus, lorsque vous utilisez l’éditeur de requête, l’ID est renvoyé en plus du reste. Pas mal, non ?
Clauses SOQL facultatives
La clause SELECT et la clause FROM sont obligatoires, mais SOQL comprend également des clauses facultatives permettant d’affiner votre requête.
Les exemples de requêtes que vous créez dans votre Trailhead Playground renvoient un nombre relativement petit d’enregistrements. La dernière requête a renvoyé 20 enregistrements. Que se passerait-il s’il y avait des milliers d’enregistrements ? La puissance de calcul nécessaire pour traiter ces données serait considérable. Ne serait-il pas utile que SOQL puisse renvoyer un sous-ensemble de tous les enregistrements ? Justement, il le peut.
WHERE
La clause WHERE définit les conditions auxquelles un enregistrement doit répondre pour être sélectionné et renvoyé. Utilisez la clause WHERE de la même manière que vous utilisez les filtres pour limiter les données affichées dans une vue de liste ou un rapport. Par exemple, si nous recherchons un contact dont le prénom est Stella, nous pouvons ajouter WHERE FirstName = 'Stella'
à la fin de notre requête, comme suit :
SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'
Vous pouvez également définir la clause WHERE pour filtrer selon plusieurs conditions. Vous pouvez le faire de différentes façons, à l’aide de trois opérateurs : AND, OR et IN. Penchons-nous sur quelques exemples.
AND |
Utilisez AND pour renvoyer les enregistrements qui remplissent deux conditions. La requête suivante renvoie tous les enregistrements dont le prénom est Stella et le nom de famille Pavlova.SELECT Name, Email FROM Contact WHERE FirstName = 'Stella' AND LastName = 'Pavlova' |
OR |
Utilisez OR pour renvoyer les enregistrements qui remplissent une condition sur deux. La requête suivante renvoie les enregistrements dont le nom de famille est James ou Barr.SELECT Name, Email FROM Contact WHERE LastName = 'James' OR LastName = 'Barr' |
IN |
Utilisez IN pour renvoyer les enregistrements qui remplissent au moins une condition sur trois ou plus. La clause IN est couramment utilisée pour renvoyer les valeurs d’une liste de sélection, ou les valeurs d’une liste ou d’un ensemble. IN correspond à une requête qui comporterait autrement de nombreuses conditions OR. La requête suivante renvoie tous les enregistrements dont le nom de famille est James, Barr, Nedaerk ou Forbes.SELECT Name, Email FROM Contact WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes') |
LIMIT
Le mot-clé LIMIT
définit le nombre maximal d’enregistrements à renvoyer. LIMIT est utile lorsque vous procédez à des tests et que vous ne voulez pas attendre qu’une requête traite un grand ensemble de données. Au fur et à mesure que vous en apprendrez davantage sur SOQL, vous découvrirez des moyens plus pertinents d’éviter de renvoyer trop d’enregistrements, mais pour commencer, LIMIT est une solution simple. Essayons d’ajouter une limite à notre requête.
- Revenez à l’éditeur de requête dans la Developer Console.
- À la fin de la requête, saisissez
LIMIT 5
, pour obtenir ce qui suit :SELECT Email, Name FROM Contact LIMIT 5
- Cliquez sur Execute (Exécuter).
Le volet Résultats de requête affiche cinq résultats.
ORDER BY
Maintenant que vous pouvez maîtriser la quantité de résultats, comment pouvez-vous organiser ces résultats ? Utilisez la clause ORDER BY
pour trier les résultats selon la valeur d’un champ spécifique. Vous avez la possibilité d’utiliser un critère de qualification dans une clause ORDER BY pour spécifier un ordre croissant (par défaut) ou décroissant, comme vous le feriez dans une feuille de calcul. Enfin, si vous disposez de nombreuses valeurs de champ vides, utilisez le critère de qualification NULLS pour regrouper toutes les valeurs NULL, soit en premier (par défaut), soit en dernier.
Syntaxe |
Description |
Exemple |
ASC |
Renvoie les résultats par ordre croissant |
SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5 |
DESC |
Renvoie les résultats par ordre décroissant |
SELECT Name, Email FROM Contact ORDER BY Email DESC LIMIT 5 |
NULLS FIRST | LAST |
Renvoie les enregistrements vides au début (NULLS FIRST) ou à la fin (NULLS LAST) |
SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST |
Dans l’exemple ASC, SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5
renvoie les champs Name
et Email
de cinq contacts, triés par ordre croissant en fonction du nom.
Dans l’exemple NULLS, SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST
renvoie le nom et l’e-mail par ordre croissant (car il s’agit de l’ordre de tri par défaut) en fonction de l’e-mail. Les enregistrements sans adresse e-mail sont regroupés à la fin.
Cette présentation de la puissance de SOQL vous permet désormais de récupérer d’importants ensembles de données, de définir des limites pour obtenir des résultats très spécifiques et d’organiser les données renvoyées en fonction de vos besoins. Vous êtes bien parti.