将循环查询结果合并为1

时间:2016-10-14 02:18:02

标签: sql coldfusion

我有一个循环查询SP并在查询中返回结果,我想将该查询(无论循环运行多少次)组合成一个最终查询,以便我可以在我的jgrid表中输出。这是代码:

  <cfloop query="query1">
      <cfstoredproc procedure="[Columns]" datasource="#CompanyDB#">
        <cfprocresult name="queryResults">
        <cfprocparam cfsqltype="cf_sql_varchar" value="#query1.ID#">
        <cfprocparam cfsqltype="cf_sql_varchar" value="#query1.Role#">
    </cfstoredproc>
  </cfloop>

所以,这里循环2次,因此得到2个queryResults。我想将结果合并为一个大查询,以便我可以在jGrid查询中输出。

1 个答案:

答案 0 :(得分:1)

正如Leigh所说,这不是一个很好的方法,可能会以更清洁的方式进行管理,但有几种方法可以做你所要求的:

使用queryNew()和其他相关函数构造自己的查询对象并通过每个循环填充它。

在循环中使用查询查询UNION结果,例如:

<cfloop query="query1">
<cfstoredproc procedure="[Columns]" datasource="#CompanyDB#">
    <cfprocresult name="queryResults">
    <cfprocparam cfsqltype="cf_sql_varchar" value="#query1.ID#">
    <cfprocparam cfsqltype="cf_sql_varchar" value="#query1.Role#">
</cfstoredproc>
<cfquery name="finalResults" dbtype="query">
    <cfif isDefined('finalResults')>
        ( SELECT * FROM finalResults )
        UNION ALL
    </cfif>
    ( SELECT * FROM queryResults )
</cfquery>