2. ABDELHAKIM
MOUTTAQUI
Chef de projets Sénior, SIWAY
@adbelhakim
@casasfdug
@SiWay_WebAgency
https://ma.linkedin.com/in/abdelhakimmouttaqui
https://www.linkedin.com/company/siway
http://abdelhakimmouttaqui.blogspot.com/
abdelhakim.mouttaqui@siway.fr
contact@siway.fr
3. SIWAY - VOTRE INTÉGRATEUR CERTIFIE SALESFORCE
SOQL : GUIDE DES DÉBUTANTS
Sommaire :
1. Qu’est-ce que c’est SOQL et pourquoi devrais-je l’apprendre?
2. Où écrire des requêtes SOQL
3. Exemple: Comment écrire une requête SOQL simple
4. Exemple: Comment écrire une requête SOQL cross-objet («vers le haut»)
5. Exemple: Comment écrire une requête SOQL cross-objet («vers le bas»)
4. SOQL : GUIDE DES DÉBUTANTS
QU’EST-CE QUE C’EST SOQL ET POURQUOI DEVRAIS-JE L’APPRENDRE?
SOQL est le langage officielle de requête de Salesforce.
Il est basé sur SQL !
En un mot, SOQL est juste un outil qui vous permet d'accéder à
n’importe quel enregistrement dans votre base de données
Salesforce. Voici un exemple:
SELECT Id, Name, Email, AccountId FROM Contact
Dans le code ci-dessus, nous utilisons SOQL pour accéder à ces
quatre champs pour chaque contact dans Salesforce!
5. SOQL : GUIDE DES DÉBUTANTS
QU’EST-CE QUE C’EST SOQL ET POURQUOI DEVRAIS-JE L’APPRENDRE?
Voici pourquoi SOQL est significatif:
1. Vous pouvez utiliser les deux SOQL et Apex dans un déclencheur
2. SOQL vous permet de faire des actions cross-object dans votre
déclencheur
SOQL vous permet d'accéder aux enregistrements qui sont normalement pas
disponible dans votre déclencheur.
Par exemple, si vous écrivez un déclencheur sur les pistes, vous pouvez utiliser
SOQL d'accéder aux données de l'utilisateur, un objet totalement
indépendants!
3. La maîtrise SOQL est la clé de la maîtrise Apex
Un bon développeur Salesforce empêche leur code d’atteindre ces
limites en utilisant efficacement SOQL.
6. SOQL : GUIDE DES DÉBUTANTS
OÙ ÉCRIRE DES REQUÊTES SOQL
Vous avez probablement déjà écrit SOQL, mais vous ne pourriez pas
le réaliser encore!
Est-ce que ceci est familier pour vous?
OUI - vous pouvez écrire des requêtes SOQL dans Data Loader!
Et oui, vous pouvez contourner l'interface utilisateur et il suffit de
taper votre requête dans la boîte!
7. SOQL : GUIDE DES DÉBUTANTS
OÙ ÉCRIRE DES REQUÊTES SOQL
Mais il ya encore un meilleur endroit pour écrire SOQL, et il est à la mode ces
jours. Je parle de nouvel outil de Salesforce appelé Workbench.
Pour commencer l'écriture de requêtes SOQL, connectez-vous simplement à
Workbench (https://workbench.developerforce.com/login.php) et rendez-vous ici:
Queries >> SOQL Query
L'écriture de requêtes SOQL dans Workbench ou Data Loader est utile pour
tester vos requêtes, mais le pouvoir réel de SOQL vient quand vous l’utilisez
avec Apex, comme dans un déclencheur.
8. SOQL : GUIDE DES DÉBUTANTS
EXEMPLE: COMMENT ÉCRIRE UNE REQUÊTE SOQL SIMPLE
SOQL est tellement fondamentale que je n'ai presque pas besoin d'expliquer ces exemples !
Ceci est votre requête de base qui tire trois champs standard et un champ personnalisé de chaque contact.
SELECT Id, Name, Sex__c, BirthDate FROM Contact
La clause WHERE :
SELECT Id, Name, Sex__c FROM Contact WHERE DoNotCall = false
L'utilisation de valeurs TEXTE, PickList, ou ID:
SELECT Id, Name, Phone, Birthdate, Likes_Ice_Cream__c
FROM Contact
WHERE Phone != null
AND Sex__c = 'Female'
AND RecordTypeId != '012i0000000ES3H'
Toujours entourer ces trois types de données dans des guillemets simples !
Utilisation de dates :
SELECT Id, Name, Phone, Birthdate, Likes_Ice_Cream__c
FROM Contact
WHERE Phone != null
AND BirthDate = TODAY
9. SOQL : GUIDE DES DÉBUTANTS
EXEMPLE: COMMENT ÉCRIRE UNE REQUÊTE SOQL CROSS-OBJET («VERS LE HAUT»)
Chaque fois que vous deux objets connectés dans SALESFORCE, vous allez
devoir soit accéder au données vers le HAUT ou bien vers le BAS.
«Upwards traversal» est utilisée chaque fois qu'il ya un champ de l'objet de type
«lookup» ou «master-detail». Ceci est parfois désigné comme allant de l'enfant au
parent.
Voici quelques exemples de parcours vers le haut:
SELECT Id, Account.Name, Account.Industry, Account.Website
FROM Contact
WHERE Account.NumberOfEmployees >= 200
L'exemple ci-dessus peut vous sembler familier - si vous avez créer un WORKFLOW sur les
contacts, vous seriez en mesure de référencer les champs de compte du contact en utilisant la
même notation par points.
SELECT Account.Owner.Profile.CreatedBy.Name FROM Contact
Vous pouvez parcourir plusieurs niveaux vers le haut!
SELECT Id, Best_Friend__r.Likes_Ice_Cream__c FROM Contact
Ici, nous allons parcouru un champ «lookup» personnalisé «Best_Friend__c» sur l'objet de contact.
Remarquez comment la «__C» se transforme en «__r» en parcourant ce domaine!
10. SOQL : GUIDE DES DÉBUTANTS
EXEMPLE: COMMENT ÉCRIRE UNE REQUÊTE SOQL CROSS-OBJET («VERS LE BAS»)
Parcours vers le bas est quand vous récupérez des enregistrements d'une
liste liée. Par exemple, si nous faisons une requête SOQL sur les comptes, le
parcours vers le bas pourrait extraire des données de contacts du compte.
Jetons un œil à une requête SOQL Parcours vers le bas:
SELECT Id, Name, Industry, AnnualRevenue,
( SELECT Name, Email, BirthDate FROM Contacts )
FROM Account
Nous avons essentiellement deux requêtes dans une instruction SOQL. Un
pour récupérer les données générales de compte, et l'autre pour récupérer
la liste de contacts liés.
11. SOQL : GUIDE DES DÉBUTANTS
EXEMPLE: COMMENT ÉCRIRE UNE REQUÊTE SOQL CROSS-OBJET («VERS LE BAS»)
Ne pas oublier ces trois choses lorsque vous utilisez le Parcours vers le bas :
1. La requête imbriquée est traitée comme un autre champ. Voilà pourquoi il y a une virgule après le champ de
AnnualRevenue.
2. Nous utilisons la version pluriel "Contacts" dans la requête SOQL imbriqué. Si vous avez besoin pour trouver
le mot-clé pour une relation personnalisée, trouver le champ lookup ou de master-detail et de regarder ici:
Astuce Pro : Si vous utilisez des relations personnalisées, ajouter « __r » pour le mot clé: « Contacts__r »
3. Vous pouvez combiner toutes les techniques de SOQL que vous avez appris dans votre requête!
SELECT Id, Name, Account.Description, CreatedBy.Name,
(SELECT Amount FROM Opportunities WHERE Amount > 100),
(SELECT Name FROM Best_Friends__r WHERE Phone != null)
FROM Contact
WHERE Account.Secret_Notes__c LIKE '%Tacos%'
AND (Sex__c = 'Male' OR Likes_Ice_Cream__c = true)