Partager via


Utilisez une jointure externe gauche dans QueryExpression afin de rechercher des enregistrements « pas dans »

 

Date de publication : novembre 2016

S’applique à : Dynamics CRM 2015

Vous pouvez utiliser une jointure externe gauche via la classe QueryExpression pour effectuer une requête qui filtre sur la table de jointure, telle que rechercher tous les contacts sans activité de campagne au cours des deux derniers mois. Une autre utilisation courante pour ce type de requête consiste à rechercher des enregistrements « à l’extérieur » d’un ensemble, comme dans les cas suivants :

  • Rechercher tous les prospects qui n’ont pas de tâche

  • Rechercher tous les comptes qui n’ont pas de contact

  • Rechercher tous les prospects qui ont une ou plusieurs tâches

Une jointure externe gauche renvoie chaque ligne qui répond à la jointure de la première entrée avec la seconde entrée. Elle renvoie également toute ligne de la première entrée qui n’avait pas de lignes correspondantes dans la seconde entrée. Les lignes sans correspondance de la seconde entrée sont renvoyées comme valeurs nulles.

Vous pouvez effectuer une jointure externe gauche dans QueryExpression en utilisant l’attribut entityname comme opérateur de condition. L’attribut entityname est valide en termes de conditions, de filtres et de filtres imbriqués.

Rechercher tous les prospects qui n’ont pas de tâche, à l’aide d’un alias

L’exemple suivant montre comment construire cette requête :

QueryExpression qx = new QueryExpression("lead");
qx.ColumnSet.AddColumn("subject");

LinkEntity link = qx.AddLink("task", "leadid", "regardingobjectid", JoinOperator.LeftOuter);
link.Columns.AddColumn("subject");
link.EntityAlias = "tsk";

qx.Criteria = new FilterExpression();
qx.Criteria.AddCondition("tsk", "activityid", ConditionOperator.Null);

Cela équivaut au SQL suivant :

SELECT lead.FullName
FROM Leads as lead
LEFT OUTER JOIN Tasks as ab
ON (lead.leadId  =  ab.RegardingObjectId)
WHERE ab.RegardingObjectId is null

Voir aussi

Générer des requêtes avec QueryExpression
Tester une valeur nulle
Utiliser la classe QueryExpression
Utiliser la classe QueryByAttribute

© 2017 Microsoft. Tous droits réservés. Copyright