如何处理recordcount中的变量

时间:2017-04-30 23:51:58

标签: coldfusion

我有一个名为" getvalues"的查询。此查询将循环不同的次数,每次都在其末尾添加一个数字(以创建多个查询) 例如:getvalues1,getvalues2,getvalues3,getvalues(依此类推)。话虽如此,我试图获得所有这些查询的总记录数。循环外的变量totalrecords设置为0。之后,每次循环运行时,当前查询的记录计数将被添加到totalrecords。

我在这里遇到的问题是octothorpes的位置。如果我将其设置为:

<cfset totalrecords = totalrecords + #getvalues1.recordCount#> 

它运行没有问题,所以我确定这是问题所在。

<cfloop from="1" to=#numberOfTables# index="q">
<cfquery name="getvalues#q#" datasource="mydb"
</cfquery>
<cfset totalrecords = totalrecords + #getvalues#q#.recordCount#>
</cfloop>

对不起,如果我说这个问题很奇怪。我不知道该怎么问,但我希望我能得到我的问题。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

您是否有某种原因可以/不想针对返回所需数据的数据库进行单一查询?您可以在查询中移动循环并在单个SQL语句中创建UNION查询。或者,根据您的数据库,您可以编写执行相同操作的存储过程/函数。对数据库进行单次调用并返回所需的所有数据(无论如何需要聚合),比循环可变次数并每次返回一段数据要高效得多。

答案 1 :(得分:1)

您可以使用evaluate()

<cfset totalrecords = totalrecords + #evaluate('getvalues' & q & '.recordCount')#>

答案 2 :(得分:1)

    <cfquery name="getTotals" dbtype="query">
    <cfloop from="1" to="#numberOfTables#" index="idx1">
        select count(pkID) from getvalues#idx1# as recCount
        <cfif idx1 lt numberOfTable>
            UNION
        </cfif>
    </cfloop>
</cfquery>

<cfquery name="getGrandTotal" dbtype="query">
    select sum(recCount) as GrandTotal from getTotals
</cfquery>

<cfoutput>#getGrandTotal.GrandTotal#</cfoutput>