由于我根据我的同事使用coldfusion是新手,因此我们无法加入查询的coldfusion查询。所以这就是我们会做的一点"技巧"做左连接。 例如:
<cfquery datasource="Intranet" name="GroupStarsGiven">
SELECT execoffice_status, submitterdept, COUNT(*) as 'totalstarsgiven'
FROM CSEReduxResponses
WHERE execoffice_status = 1
GROUP BY execoffice_status, submitterdept
</cfquery>
<cfquery dbtype="query" name="GetTotalStarsGiven">
SELECT *
FROM GroupStarsGiven, GetDepartments
WHERE GroupStarsGiven.submitterdept = GetDepartments.csedept_id
</cfquery>
<cfquery name="joinQuery2" dbtype="query" >
SELECT *
FROM GetTotalStarsGiven
WHERE GetTotalStarsGiven.csedept_id = -1
</cfquery>
<cfset QueryAddRow(joinQuery2)>
<cfquery name="GetUnion2" dbtype="query" >
SELECT *
FROM GetUnion, GetTotalStarsGiven
WHERE GetUnion.csedept_id = GetTotalStarsGiven.csedept_id
UNION
SELECT GetUnion.*, joinQuery2.*
FROM GetUnion, joinQuery2
WHERE GetUnion.csedept_id NOT IN (#ValueList(GetTotalStarsGiven.csedept_id)#)
ORDER BY csedept_name ASC
</cfquery
这是左边加入coldfusion的方式吗?只是想确保,因为我无法找到关于此的好文章。 感谢
答案 0 :(得分:5)
不完全确定你在这里要做什么,但答案是“在ColdFusion中没有左边的连接?”是:这取决于。如果数据库支持,你当然可以在对外部数据库的查询中使用左连接(我想不到没有的关系数据库)。但是你不能在ColdFusion查询查询中进行连接;你必须借助创造性的工会来实现这一目标。
但是,通常可以通过在对数据库的初始查询中有效使用连接来消除对查询查询中的连接的需要。如果您需要从完全不同的ColdFusion数据源或<cfdirectory>
的结果中加入查询,则例外情况就是如此。
答案 1 :(得分:2)
在ColdFusion的查询查询中,没有左外连接是正确的。您展示的方法是一种常见的解决方案。如果您正在使用ColdBox MVC平台,实际上有一个插件可以为您留下外连接。
http://wiki.coldbox.org/wiki/Plugins:QueryHelper.cfm#doLeftOuterJoin
免责声明:我是Team ColdBox的一员。
答案 2 :(得分:0)
如果您非常绝望并希望在正确的方向上使用某些代码,请注意http://instantbadger.blogspot.com/2006/07/faking-left-outer-join-in-query-of.html,但在为联盟添加新的交叉引用列时,此解决方案无法确保数据类型的一致性。