Coldfusion 条件CF记录计数
我试图通过一次查询多个类别中的大量项,然后使用语句将这些结果过滤到我为每个类别显示的唯一表中,来保存数据库服务器的一些请求。我希望找到返回的每个类别的记录计数,而不仅仅是整个查询的记录计数 基本准则是:Coldfusion 条件CF记录计数,coldfusion,cfquery,cfoutput,Coldfusion,Cfquery,Cfoutput,我试图通过一次查询多个类别中的大量项,然后使用语句将这些结果过滤到我为每个类别显示的唯一表中,来保存数据库服务器的一些请求。我希望找到返回的每个类别的记录计数,而不仅仅是整个查询的记录计数 基本准则是: <cfinvoke component="..." method="..." returnvariable="session.queryList"> ... </cfinvoke> <cfoutput #session.queryList#>
<cfinvoke component="..." method="..." returnvariable="session.queryList">
...
</cfinvoke>
<cfoutput #session.queryList#>
<cfif #category# eq "A">
[Table for A things]
</cfif>
<cfif #category# eq "B">
[Table for B things]
</cfif>
<cfif #category# eq "C">
[Table for C things]
</cfif>
</cfoutput>
我不想在这里使用按类别排序,因为这些表实际上位于我们隐藏和显示的不同div上,所以我们需要单独的表
我遇到的问题是,如果category=A中没有返回任何记录,我希望一个Things的表不会显示任何结果,但是RecordCount似乎适用于整个查询。有没有什么方法可以表达类似的意思?我相信你是在尝试做以下事情。如果查询按分组项排序,则具有帮助您对查询结果进行分组的功能
<cfoutput query="#session.queryList#" group="category">
<h3>Category #category#</h3>
<table>
<tr><th>...</th><th>...</th></tr>
<cfoutput><!--- This cfoutput loops through the each record in the group. --->
---rows---
</cfoutput>
<table>
</cfoutput>
我相信你正在努力做到以下几点。如果查询按分组项排序,则具有帮助您对查询结果进行分组的功能
<cfoutput query="#session.queryList#" group="category">
<h3>Category #category#</h3>
<table>
<tr><th>...</th><th>...</th></tr>
<cfoutput><!--- This cfoutput loops through the each record in the group. --->
---rows---
</cfoutput>
<table>
</cfoutput>
QoQ能帮上忙
<cfinvoke component="..." method="..." returnvariable="session.queryList">
...
</cfinvoke>
<!---then run QoQ on it--->
<cfquery name="catA" dbtype="query">
select * from session.queryList where category ="A"
</query>
<cfquery name="catB" dbtype="query">
select * from session.queryList where category ="B"
</query>
<cfif catA.recordcount>
<cfoutput query="catA">
[Table for A things]
</cfoutput>
<cfelse>
No Records for A things
</cfif>
<cfif catB.recordcount>
<cfoutput query="catB">
[Table for B things]
</cfoutput>
<cfelse>
No Records for B things
</cfif>
QoQ能帮上忙
<cfinvoke component="..." method="..." returnvariable="session.queryList">
...
</cfinvoke>
<!---then run QoQ on it--->
<cfquery name="catA" dbtype="query">
select * from session.queryList where category ="A"
</query>
<cfquery name="catB" dbtype="query">
select * from session.queryList where category ="B"
</query>
<cfif catA.recordcount>
<cfoutput query="catA">
[Table for A things]
</cfoutput>
<cfelse>
No Records for A things
</cfif>
<cfif catB.recordcount>
<cfoutput query="catB">
[Table for B things]
</cfoutput>
<cfelse>
No Records for B things
</cfif>
QofQ很慢。您只需往返mySQL即可完成此任务:
SELECT someColumn, category, count(*) AS categoryCount
FROM theTable
GROUP BY category
ORDER BY category, someColumn
分组将为您提供可以在CFML中使用的每个类别的计数
<cfoutput query="session.queryList" group="category">
<cfif categoryCount eq 0>
No Records for #category#. =(
</cfif>
<cfoutput>
#someColumn#<br>
</cfoutput>
</cfoutput>
QofQ很慢。您只需往返mySQL即可完成此任务:
SELECT someColumn, category, count(*) AS categoryCount
FROM theTable
GROUP BY category
ORDER BY category, someColumn
分组将为您提供可以在CFML中使用的每个类别的计数
<cfoutput query="session.queryList" group="category">
<cfif categoryCount eq 0>
No Records for #category#. =(
</cfif>
<cfoutput>
#someColumn#<br>
</cfoutput>
</cfoutput>
我不想那样分组。我试图获取查询返回,对其进行过滤,以便在每个特定的表中只显示某些返回的记录,并获取这些过滤结果的记录计数。因此,如果我返回的记录总数为500条,其中100条为A类,我想知道如果A类的recordCount为0,则显示“没有A类的项,但我只能找出如何获取总查询的记录计数”。@MLynch-我想您仍然可以通过分组输出来实现这一点。只需设置一个标志,指示何时没有找到任何结果。我不想那样分组。我试图获取查询返回,对其进行过滤,以便在每个特定的表中只显示某些返回的记录,并获取这些过滤结果的记录计数。因此,如果我返回的记录总数为500条,其中100条为A类,我想知道如果A类的recordCount为0,则显示“没有A类的项,但我只能找出如何获取总查询的记录计数”。@MLynch-我想您仍然可以通过分组输出来实现这一点。只需设置一个标志,指示何时没有找到任何结果。这是我以前想的,但我一定把事情搞砸了,因为它工作不正常。谢谢你的建议和正确的格式,这真的很有帮助。这是我以前想的,但我一定把事情弄糟了,因为它不能正常工作。谢谢你的建议和正确的格式,这真的很有帮助。QoQ的作品,但不太理想。记住他们不是免费的。因此,您基本上是在用额外的数据库行程换取额外的资源成本,以便在内存中构建多个数据集。我认为可以在原始sql查询中执行此操作。1.你的数据库管理系统是什么?2.大查询看起来像什么?QoQ的工作,但不太理想。记住他们不是免费的。因此,您基本上是在用额外的数据库行程换取额外的资源成本,以便在内存中构建多个数据集。我认为可以在原始sql查询中执行此操作。1.你的数据库管理系统是什么?2.大查询是什么样子的?这是一个有趣的想法,可以使用一些额外的逻辑。它不会按原样工作,因为该查询中的计数*永远不会为0@MLynch-您使用的是哪种dbms?用于返回多个结果集的查询是什么?此外,根据DBMS的不同,您不能按所选的列数分组。但是你可以使用subselect或window函数来获取你想要的计数。这是一个有趣的想法,可以使用一些额外的逻辑。它不会按原样工作,因为该查询中的计数*永远不会为0@MLynch-您使用的是哪种dbms?用于返回多个结果集的查询是什么?此外,根据DBMS的不同,您不能按所选的列数分组。但是您可以使用subselect或window函数来获取您要查找的计数。