Partager via


Utilisez une jointure externe gauche dans FetchXML pour rechercher des enregistrements "pas dans"

Vous pouvez utiliser une jointure externe gauche dans FetchXML pour effectuer une requête qui filtre la table de jointure, par exemple pour rechercher tous les contacts qui n’ont eu aucune 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 la entityname colonne comme opérateur de condition. La colonne 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

Ce qui suit 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

Ce qui suit 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

Créer des requêtes avec FetchXML
Exemple : Utiliser l’agrégation dans FetchXML
Utiliser FetchXML pour construire une requête
Exemple : valider et exécuter une requête enregistrée

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).