Выберите количество контактов из учетных записей, используя FetchXML - PullRequest
0 голосов
/ 10 сентября 2018

Кто-нибудь знает формат FetchXML для выбора количества контактов для учетных записей?

Например, у меня будет список AccountID, для которых я бы использовал фильтр IN, и мне просто потребуется AccountID и целое число контактов для этой учетной записи.

Решено (см. Ниже) с незначительным изменением для групп по счетам. Вот последняя версия fetchxml, которую я использовал:

<fetch xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" aggregate="true" distinct="false" mapping="logical"> 
<entity name="contact">
<attribute name="contactid" alias="recordcount" aggregate="count" />
<link-entity name="account" to="accountid" alias="accountid">
<attribute name="accountid" alias="accountid" groupby="true" />
<filter>
<condition attribute="accountid" operator="in">
<value>708039fd-f7b1-e811-a973-000d3af4a510</value>
<value>0a8139fd-f7b1-e811-a973-000d3af4a510</value>
<value>428139fd-f7b1-e811-a973-000d3af4a510</value>
<value>4a8139fd-f7b1-e811-a973-000d3af4a510</value>
<value>618139fd-f7b1-e811-a973-000d3af4a510</value>
<value>9f8139fd-f7b1-e811-a973-000d3af4a510</value>
<value>ae8239fd-f7b1-e811-a973-000d3af4a510</value>
</condition>
</filter>
</link-entity>
</entity>
</fetch>

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы можете выполнить совокупную выборку с помощью группы по параметру parentcustomerid.

<fetch distinct='false' mapping='logical' aggregate='true'> 
    <entity name='contact'> 
        <attribute name='contactid' alias='contact_count' aggregate='countcolumn' /> 
        <attribute name='parentcustomerid' alias='parentcustomerid' groupby='true' />
        <link-entity name='account' from='accountid' to='parentcustomerid'>
            <filter type='and'>
                <condition attribute='accountid' operator='in'>
                    <value>{00000000-0000-0000-0000-000000000001}</value>
                    <value>{00000000-0000-0000-0000-000000000002}</value>
                </condition >
            </filter>
        </link-entity> 
    </entity> 
</fetch>
0 голосов
/ 10 сентября 2018

Это просто, когда вы используете поле свертки .

Тогда вы можете легко запросить счет.

<fetch>
  <entity name="account" >
    <attribute name="name"  />
    <attribute name="new_contactcountrollup"  />
  </entity>
</fetch>

Обновление:

Почему я сказал, что подзапрос не поддерживается в fetchxml, так как я думал о втором решении.

--using just JOIN
SELECT a.accountid, count(1) AS [contact count] FROM contact c
INNER JOIN account a
ON c.parentcustomerid = a.accountid
WHERE a.accountid IN  (
'{0ACDC4F5-4885-E811-A967-000D3A1A9407}', '{BA41CEBA-199F-E811-A96B-000D3A1A9EFB}')
GROUP BY a.accountid

--using SUBQUERY
SELECT a.accountid,
    (SELECT Count(1) FROM contact c WHERE c.parentcustomerid = a.accountid) AS [contact count]
    FROM account a
    WHERE a.accountid IN (
'{0ACDC4F5-4885-E811-A967-000D3A1A9407}', '{BA41CEBA-199F-E811-A96B-000D3A1A9EFB}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...