Share via


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

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Vous pouvez utiliser une jointure externe gauche dans FetchXML 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 FetchXML 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.

Vous pouvez créer une requête avec une jointure externe gauche par programme et exécuter la requête avec RetrieveMultipleRequest, et vous pouvez enregistrer la requête en créant un enregistrement SavedQuery. Vous pouvez ouvrir une requête enregistrée contenant une jointure externe gauche dans les éditeurs Recherche avancée ou Requête enregistrée dans l’application Web, puis exécuter et consulter les résultats, mais certaines fonctionnalités des éditeurs sont désactivées. Les éditeurs permettent de modifier la requête, comme modifier les colonnes retournées, mais l’éditeur ne prend pas en charge la modification de la jointure externe gauche.

Exemple : rechercher tous les comptes qui n’ont pas de prospect

L’exemple suivant montre comment construire la requête dans FetchXML :

<fetch mapping='logical'>
 <entity name='account'>
  <attribute name='name'/>
  <link-entity name='lead'
               from='leadid'
               to='originatingleadid'
               link-type='outer'/>
  <filter type='and'>
   <condition entityname='lead'
              attribute='leadid'
              operator='null'/>
  </filter>
 </entity>
</fetch>

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

L’exemple suivant montre comment construire la requête dans FetchXML :

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="lead">
    <attribute name="fullname" />
    <link-entity name="task" from="regardingobjectid" to="leadid" alias="ab" link-type="outer">
       <attribute name="regardingobjectid" />
    </link-entity>
    <filter type="and">
        <condition entityname="ab" attribute="regardingobjectid" operator="null" />
    </filter>
  </entity>
<fetch/>

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 FetchXML
Exemple : utiliser l’agrégation dans FetchXML
Utiliser FetchXML pour créer une requête
Exemple : valider et exécuter une requête enregistrée

Microsoft Dynamics 365

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