ColdFusion:SQL Select 来自查询
ColdFusion: SQL Select IN from a Query
我有一个 SQL 服务器查询,其中 returns 一个 MyBusinessUnit 列的两个值 returns 两个值,比如:
1111
2222
在名为 MyQuery1
的查询对象中
这两个值也存在于 DB2 数据库的 MyCorpUnit
列中。
我想要的是 select 来自 DB2 table 的所有匹配记录——而且,不,跨数据库查询不起作用。
所以,这是我的 Query2
DB2 数据库:
<cfquery name="Query2" datasource="#application.DSN#">
SELECT MyCorpUnit WHERE MyCorpUnit IN
(
<cfqueryparam value=" #Query1.MyBusinessUnit #" CFSQLType="cf_sql_varchar" />
)
</cfquery>
但是 Query2 只返回一个值 (1111) 的匹配记录。
所以需要一些其他的方法。我试图创建一个字符串,但也没有用。
有什么想法吗?
谢谢!
cfqueryparam 有一个 list 属性可能有帮助:
<cfqueryparam value = "parameter value"
CFSQLType = "parameter type"
list = "yes|no"
maxLength = "maximum parameter length"
null = "yes|no"
scale = "number of decimal places"
separator = "separator character">
AND/OR ...additional criteria of the WHERE clause...>
我以前用过,但不确定它是否在 QoQ 中。 :D
参考:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html
我将接受@AJ Dyka 的回答[谢谢!]但我还有更多内容要补充以使其完整。事实上,根据他的建议,我最终使用了 'LIST' 属性。关于它的一个很好的讨论can be found here。
但是,正如您在评论中看到的那样,尽管使用了列表,我仍然只得到“1111”。那是因为我的数据中有前导空格。我最终使用了 TRIM 函数。这是一个代码片段。
已将 Query1 的输出转换为列表:
<cfset ListUniqueWStreamBusinessUnit = ValueList(Query1.MyBusinessUnit )>
然后是神奇的代码片段!
...
WHERE trim(GMMCU) IN
(
<cfqueryparam value="#ListUniqueWStreamBusinessUnit#"
CFSQLType="cf_sql_varchar"
list="yes" />
)
我有一个 SQL 服务器查询,其中 returns 一个 MyBusinessUnit 列的两个值 returns 两个值,比如:
1111
2222
在名为 MyQuery1
这两个值也存在于 DB2 数据库的 MyCorpUnit
列中。
我想要的是 select 来自 DB2 table 的所有匹配记录——而且,不,跨数据库查询不起作用。
所以,这是我的 Query2
DB2 数据库:
<cfquery name="Query2" datasource="#application.DSN#">
SELECT MyCorpUnit WHERE MyCorpUnit IN
(
<cfqueryparam value=" #Query1.MyBusinessUnit #" CFSQLType="cf_sql_varchar" />
)
</cfquery>
但是 Query2 只返回一个值 (1111) 的匹配记录。
所以需要一些其他的方法。我试图创建一个字符串,但也没有用。
有什么想法吗?
谢谢!
cfqueryparam 有一个 list 属性可能有帮助:
<cfqueryparam value = "parameter value"
CFSQLType = "parameter type"
list = "yes|no"
maxLength = "maximum parameter length"
null = "yes|no"
scale = "number of decimal places"
separator = "separator character">
AND/OR ...additional criteria of the WHERE clause...>
我以前用过,但不确定它是否在 QoQ 中。 :D
参考:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html
我将接受@AJ Dyka 的回答[谢谢!]但我还有更多内容要补充以使其完整。事实上,根据他的建议,我最终使用了 'LIST' 属性。关于它的一个很好的讨论can be found here。
但是,正如您在评论中看到的那样,尽管使用了列表,我仍然只得到“1111”。那是因为我的数据中有前导空格。我最终使用了 TRIM 函数。这是一个代码片段。
已将 Query1 的输出转换为列表:
<cfset ListUniqueWStreamBusinessUnit = ValueList(Query1.MyBusinessUnit )>
然后是神奇的代码片段!
...
WHERE trim(GMMCU) IN
(
<cfqueryparam value="#ListUniqueWStreamBusinessUnit#"
CFSQLType="cf_sql_varchar"
list="yes" />
)