查询所有没有孩子的主题

时间:2014-12-03 22:58:37

标签: dynamics-crm-2011 fetchxml

我正在尝试编写一个FetchXML查询,该查询生成一个结果集,其中包含所有没有任何子主题的主题(或者等效地,主题不用作另一个主题的主题)。这些“叶子”主题可以出现在多级主题层次结构中的任何级别,并且是用户应该为案例(事件)选择的主题。将Subject层次结构折叠到CRM本身的单个级别是不切实际的,但是使用CRM数据服务的应用程序需要一个有效主题列表。

MSDN提供了使用左外连接来查找未在另一个实体的引用字段中使用的记录的示例(例如,所有没有原始引导的帐户),但对于我的生活,我可以'使它适用于主题。

我目前最好的尝试是:

@"<fetch mapping='logical'>
    <entity name='subject'>
        <attribute name='subjectid' />
        <attribute name='title' />
        <link-entity name='subject' alias='child' from='parentsubject' to='subjectid' link-type='outer'>
            <attribute name='subjectid' />
            <attribute name='title' />
            <filter type='and'>
                <condition entity='child' attribute='subjectid' operator='null'/>
            </filter>
        </link-entity>                        
        <order attribute='title' />                    
    </entity>
</fetch>"

此查询生成包含所有主题的结果集,就好像链接的实体部分不存在一样。

删除过滤器会产生交叉连接;所有有孩子的科目都与他们的每个孩子都有联系(但是没有孩子参考就没有出现),那么所有没有孩子的科目也会出现。我只想要第二类,但添加过滤器以删除有孩子的主题会显示这些主题,好像他们没有任何孩子一样。

帮助!

1 个答案:

答案 0 :(得分:1)

你的例子(没有始发线索的账户)与你想要实现的完全相反:在例子中,&#34;父母&#34;是主管,您正在寻找没有父母(领导)的儿童记录(帐户)。

CRM不支持这种查询,遗憾的是......

实现这一目标的一种非常粗略的方法可能是(伪逻辑)

1. Fetch all subjects (let's name this list LIST1) 
2. From LIST1, pluck out the (distinct) values of parentsubjectid attributes. Let's call this LIST2
3. From LIST1, remove all records where ID is included in LIST2
4. LIST1 now contains all records which aren't linked as parentsubject in any record