Condividi tramite


Utilizzare un left outer join in FetchXML per eseguire query per i record "non contenuti" in un set

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

È possibile utilizzare un left outer join in FetchXML per eseguire una query che filtri la tabella di join, per trovare, ad esempio, tutti i contatti in cui non sono presenti attività della campagna negli ultimi due mesi. Un altro comune utilizzo per questo tipo di query è finalizzato a trovare i record "non contenuti" un un set, come nei casi seguenti:

  • Consente di trovare tutti i lead per i quali non esistono attività

  • Consente di trovare tutti gli account per i quali non esistono contatti

  • Consente di trovare tutti i lead per i quali non esistono una o più attività

Un left outer join restituisce ogni riga che soddisfa il join del primo input con il secondo input. Restituisce inoltre tutte le righe del primo input che non ha righe corrispondenti nel secondo input. Le righe non corrispondenti nel secondo input vengono restituite come valori null.

È possibile eseguire un left outer join inFetchXML utilizzando l'attributo entityname come operatore condizionale. L'attributo entityname è valido nelle condizioni, nei filtri e nei filtri annidati.

È possibile creare una query utilizzando un left outer join a livello di programmazione ed eseguire la query utilizzando RetrieveMultipleRequest ed è possibile salvare la query creando un record SavedQuery. È possibile aprire una query salvata contenente un left outer join nell'editor della ricerca avanzata o della query salvata nell'applicazione Web ed eseguire e visualizzare i risultati, ma le funzionalità dell'editor sono parzialmente disabilitate. Gli editor permettono di apportate modifiche alla query, come la modifica delle colonne restituite, ma non è possibile modificare il left outer join.

Esempio: trovare tutti gli account per i quali non esistono lead

Nell'esempio seguente viene illustrato come costruire la query in 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>

Esempio: trovare tutti i lead per i quali non esistono attività, utilizzando un alias

Nell'esempio seguente viene illustrato come costruire la query in 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/>

Questo è l'equivalente della seguente istruzione SQL:

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

Vedere anche

Creare query con FetchXML
Esempio: utilizzare l'aggregazione in FetchXML
Utilizzare FetchXML per costruire una query
Esempio: convalidare ed eseguire una query salvata

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright