2016-10-14 9 views
0

SPをクエリして結果を返すループがありますが、そのクエリを(何度もループが実行されますが)1つの最終クエリに結合してjgridテーブルに出力できます。コードは次のとおりです。ループのクエリ結果を1に結合する

<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が得られます。結果を1つの大きなクエリにまとめて、jGridクエリで出力できるようにしたい。

+2

あなたがこれまでに試してみましたか?まだ何も試していない場合は、[coldfusion combine queries](http://stackoverflow.com/search?q=%5Bcoldfusion%5D+combine+queries)で検索していくつかのアイデアを得てください。つまり、ループ内でクエリを実行するのは一般的には大きなアプローチではなく、しばしば再クエリを避けるために再構成することができます。 – Leigh

答えて

1

リーが述べたように、それは偉大なアプローチではありませんし、おそらくずっときれいな方法で管理することができますが、あなたが求めているものを行うことができますいくつかの方法があります:

使用で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> 

関連する問題