据我所知,Left Outer Join基本上意味着在目标表中是否满足条件,获取第一个表中的所有行。
" Microsoft Dynamics CRM 2013 Unleashed"本书解释说,CRM 2013引入了一个新功能,即FetchXML中的Left Outer Join。然后提供下面的FetchXML示例,它表示将显示所有联系人没有任何机会:
我无法测试这个例子,但所说的结果在我看来就像是一个内部连接而不是一个左外连接。如果它是左外连接,那么它应该导致显示所有联系人他们是否没有机会。我在这里错过了什么吗?
答案 0 :(得分:0)
要查找没有商机的联系人,您必须首先使用机会识别所有联系人,然后将其排除在所有机会集中。
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