我有一个名为" 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>
对不起,如果我说这个问题很奇怪。我不知道该怎么问,但我希望我能得到我的问题。任何帮助将不胜感激。
答案 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>