Se puede escribir una sola consulta FetchXML para obtener 1: relación de muchos?

StackOverflow https://stackoverflow.com/questions/2874860

  •  03-10-2019
  •  | 
  •  

Pregunta

¿Es posible escribir una sola consulta FetchXML que recibe una entidad raíz y varios niños? Todo lo que he podido hacer es 1: 1.

¿Fue útil?

Solución

No, no es posible.

Otros consejos

James Wood es correcta . Obtener XML es tan recursiva utilizando la entidad de enlace se puede obtener la información que desea.

Por ejemplo, la siguiente es válido:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="account">
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <link-entity name="contact" from="parentcustomerid" to="accountid" alias="aj">
        <attribute name="firstname" />
        <attribute name="lastname" />
        <attribute name="telephone1" />
        <link-entity name="businessunit" from="businessunitid" to="owningbusinessunit" alias="ak">
            <attribute name="name" />
            <attribute name="address1_line1" />
            <attribute name="address1_line2" />
            <attribute name="address1_line3" />
            <filter type="and">
              <condition attribute="name" operator="not-null" />
            </filter>
        </link-entity>
    </link-entity>
  </entity>
</fetch>

Si su pregunta realmente es "¿Es posible escribir una sola consulta FetchXML que consigue un SOLA entidad raíz y varios niños", entonces la respuesta es, por desgracia no. Sin embargo, si usted es capaz de manejar los datos duplicados de raíz (por ejemplo utilizando la funcionalidad de agrupación de un informe de SSRS) entonces lo que necesita es totalmente posible

A menos que yo he entendido bien la pregunta esto es muy posible.

Así, por ejemplo, usted quiere encontrar todos los contactos relacionados con una cuenta determinada. Esto se representa en Crm por el Cliente principal de búsqueda en el contacto de la cuenta.

introducir descripción de la imagen aquí

<fetch mapping="logical" count="100" version="1.0">
    <entity name="account">
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid">
            <attribute name="fullname" />
        </link-entity>
    </entity>
</fetch>

¿Qué le da un conjunto de resultados que tiene este aspecto:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;accountid last=&quot;{E704FAD6-2D4B-E111-9FED-00155D828444}&quot; first=&quot;{AD912122-6B3C-E111-9B37-00155D828444}&quot; /&gt;&lt;/cookie&gt;">
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Bill Miner</accountid.fullname>
    </result>
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Green</accountid.fullname>
    </result>
</resultset>

Estoy feliz de informar que es posible. Tengo una solución que funcionó bien para mí.

La única advertencia es que si usted tiene cuentas múltiples niño obtendrá varios resultados para los padres. Por ejemplo:

parent 1: child 1
parent 2: child 1
parent 2: child 2

Esto significa que se tendría que ejecutar los resultados a través de una función de clasificación, para obtener o bien todos los niños menores de los padres en una matriz multidimensional, o conseguir todas las cuentas como entradas únicas en una matriz plana.

Además, esto sólo disminuye un nivel. Si su jerarquía es multi-nivel, sería necesario modificar el código.

<fetch distinct="false" mapping="logical"> 
   <entity name="account">     
        <attribute name="name" />
        <link-entity name="account"  alias="childaccount" to="accountid" from="parentaccountid"  link-type="outer">
            <attribute name="name" alias="childname" />
        </link-entity>
    </entity>           
</fetch>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top