Skip to main content

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 :

  1. Quels sont les champs que je souhaite afficher ?
  2. 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.

SELECT Name, Email FROM Contact. SELECT et FROM sont des mots-clés SOQL. Name et Email sont des champs et Contact est un objet Salesforce standard.

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.

SELECT Name, Email FROM Contact. SELECT Name, Email est la clause SELECT.

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.

SELECT Name, Email FROM Contact. FROM Contact 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.

Remarque

Oui, il faut vraiment un Trailhead Playground complètement nouveau ! Si vous utilisez une organisation ou un Playground existant, vous pourriez rencontrer des difficultés pour effectuer les défis.

Création d’une requête à l’aide de l’éditeur de requête

  1. Dans votre organisation Trailhead Playground, cliquez sur Configuration et sélectionnez Developer Console.
  2. Cliquez sur Fichier | Ouvrir | Objets | Contact.
    La fenêtre Ouvrir répertorie le type d’entité (avec Objets mis en évidence) ainsi que ses entités (avec Contact mis en évidence).
  3. Cliquez sur Ouvrir.
    L’objet Contact s’ouvre et répertorie les noms et types de tous les champs qui lui sont associés.
  4. 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.)Onglet Éditeur de requête avec trois volets.
    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.
  5. En utilisant CTRL + clic (Windows) ou CMD + clic (Mac), sélectionnez les champs Email, Name et Languages__c.
  6. 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.
  7. Cliquez sur Execute (Exécuter).
    La requête renvoie les champs Id, Email, Name et Languages__c.

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.

  1. Revenez à l’éditeur de requête dans la Developer Console.
  2. À la fin de la requête, saisissez LIMIT 5, pour obtenir ce qui suit :
    SELECT Email, Name FROM Contact LIMIT 5
  3. 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.

Résultats de requête répertoriant les champs de nom (par ordre croissant) et d’e-mail dans l’objet Contact.

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.

Résultats de requête répertoriant les champs de nom et d’e-mail.

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.

Ressources

Formez-vous gratuitement !
Créez un compte pour continuer.
Qu’est-ce que vous y gagnez ?
  • Obtenez des recommandations personnalisées pour vos objectifs de carrière
  • Mettez en pratique vos compétences grâce à des défis pratiques et à des questionnaires
  • Suivez et partagez vos progrès avec des employeurs
  • Découvrez des opportunités de mentorat et de carrière