请考虑以下事项:
<cfoutput query="resources" group="type">
<h4>#type#</h4>
<cfoutput>
#name#
</cfoutput>
</cfoutput>
resources.recordcount
会给我记录的总数,但有没有一种优雅的方法来查找嵌套数据的记录数? e.g
<cfoutput query="resources" group="type">
<h4>#type# (#noofrecords# of #resources.recordcount#)</h4>
<cfoutput>
#name#
</cfoutput>
</cfoutput>
我可能会对循环做一些hacky,但是想知道是否有办法专门使用cfoutput组来做这件事。
答案 0 :(得分:5)
我担心你必须自己做一些计算。没有RecordCount 嵌套的分组输出,因为它实际上是所有相同的查询,CF只是 为你做一点格式化。
答案 1 :(得分:4)
您可以在输入之前进行输出。这比查询查询更有效。
<cfoutput query="resources" group="type">
<cfset noofrecords= 0>
<cfoutput>
<cfset noofrecords++>
</cfoutput>
<h4>#type# (#noofrecords# of #resources.recordcount#)</h4>
<cfoutput>
#name#
</cfoutput>
</cfoutput>
答案 2 :(得分:2)
另一种解决方案是:
<!--- I chose the pipe delimiter | names of things often contain commas,
otherwise, use any delimiter you like --->
<cfset TypesList = Valuelist(resources.type,"|")>
<cfoutput query="resources">
<h4>#Type# (#ListValueCount(TypesList,Type,"|")# of #resources.recordcount#)</h4>
<cfoutput>#name#</cfoutput>
</cfoutput>
虽然这也适用于其他应用程序,但它不适用于所有应用程序。它期望类别计数(此处为“类型”)是唯一的(没有两个具有相同名称的类型)。处理此问题的更好方法是根据ID而不是名称进行计数。例如,您可能有类似
的类别设置Fruits
Red Ones
Strawberries
Raspberries
Yellow Ones
Bananas
Vegetables
Green ones
Green peppers
Red Ones
Red Peppers
Tomatoes
基于Type(作为字符串),输出将显示Red Ones(4),Yellow Ones(1),Green Ones(1),Red Ones(4),但在类别 - 产品关系表结构中,基于该类别的唯一ID的coutning将检索准确的计数。
答案 3 :(得分:1)
如果你想要一个替代方法,你可以在原始查询中得到计数,但是,你需要在沿着这条路线前测试性能(尽管使用查询查询也会因为没有索引而有性能问题)。
SELECT f1.id, f1.name, f1.type, f2.typeCount
FROM foo f1
INNER JOIN (
SELECT COUNT(type) as typeCount, type
FROM foo
GROUP BY type
) f2 on f1.type = f2.type
ORDER BY f1.type, f1.name
然后在CF中你可以做到:
<cfoutput query="resources" group="type">
<h4>#resources.type# (#resources.typeCount# of #resources.recordCount#)</h4>
<cfoutput>
#resources.name#
</cfoutput>
</cfoutput>
作为附注,在CF10中,您还可以使用如下查询对cfloop进行分组:
<cfloop query="resources" group="type">
<h4>#resources.type# (#resources.typeCount# of #resources.recordCount#)</h4>
<cfloop>
#resources.name#
</cfloop>
</cfloop>
答案 4 :(得分:-1)
要获取嵌套数据的计数并将其显示在您想要的位置,我会这样做:
<cfoutput query = "rescources" group = "type">
query of queries to get the count this type
output the type and the count
<cfoutput>
output nested data
</cfoutput>
</cfoutput>