【问题标题】:New Left Outer Join feature in FetchXMLFetchXML 中的新左外连接功能
【发布时间】:2014-08-03 11:53:53
【问题描述】:

我理解Left Outer Join基本上是指无论目标表是否满足条件,都获取第一个表中的所有行。

“Microsoft Dynamics CRM 2013 Unleashed”一书中解释说,CRM 2013 引入了一个新功能,即 FetchXML 中的左外连接。然后提供下面的 FetchXML 示例,它声明将导致显示所有联系人,没有任何机会

我无法测试此示例,但在我看来,所述结果似乎是内连接而不是左外连接。因为如果它是一个左外部连接,那么它应该导致显示所有联系人,无论他们是否没有机会。我在这里错过了什么吗?

【问题讨论】:

    标签: sql-server dynamics-crm dynamics-crm-2013 fetchxml


    【解决方案1】:

    要查找没有机会的联系人,您必须首先识别所有机会的联系人,然后从所有机会集合中排除这些联系人。

    SQL JOIN 匹配两个表中的记录,因此INNER JOIN 将告诉您哪些联系人有机会(以及这些机会是什么)。 LEFT OUTER JOIN 进行相同的匹配,但在结果集中除了匹配项之外还保留不匹配的行。

    通过从连接集中筛选出与机会匹配的行,您可以查看哪些联系人没有机会。由于 SQL 中 OUTER JOIN 的未匹配部分对于未匹配表的所有列都将具有 NULL,因此您可以通过测试其他情况下永远不会是 NULL 的列来做到这一点,例如主键。

    问题中与 XML 等效的 SQL 是这样的:

    SELECT contact.fullname
    FROM contact
    LEFT JOIN opportunity ON opportunity.contactid = contact.contactid
    WHERE opportunity.opportunityid IS NULL
    

    【讨论】:

    • 我误以为FetchXML中的过滤条件等价于join条件。所以基本上如果我想显示所有联系人而不考虑机会的存在,我可以简单地省略过滤条件。
    猜你喜欢
    • 2018-08-16
    • 2019-07-05
    • 2011-10-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多