Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use count() function in ColdFusion query of query

Tags:

coldfusion

qoq

I wanted to use count() function in ColdFusion Query object.

Here is my code and test:

<cfset x = querynew("id,name")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test1: #y.total#</cfoutput>

<cfset temp = QueryAddRow(x)>
<cfset Temp = QuerySetCell(x, "id", 1)>
<cfset Temp = QuerySetCell(x, "Name", "Vikas")>

<cfquery name="y" dbtype="query">
    select count(*) as total from x
</cfquery>

<cfoutput>Test2: #y.total#</cfoutput>

Should I use convert function? Like if total is [enpty string] then result should be 0. Or is there any other best/proper way to do that?

like image 354
Vikas Avatar asked Aug 16 '11 09:08

Vikas


2 Answers

It does seem like this is a bug, however there is an easy way around it. Simply wrap the y.total in val(), so it would read:

<cfoutput>Test1: #val(y.total)#</cfoutput> 
<cfoutput>Test2: #val(y.total)#</cfoutput>

val() will return 0 if an empty string is passed to it.

like image 114
Scott Stroz Avatar answered Sep 19 '22 12:09

Scott Stroz


I think you've found a bug in CF here (perhaps log it @ http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html).

The first query should return 0, not [nothing]!

In your simple example, I think just dispense with the QoQ entirely, and just use x.recordCount.

But obviously this is not much chop if you have a WHERE filter in your QoQ, in which case You're gonna need to do something like you suggest. I can't see a better approach here.

If you raise that bug with Adobe, let us know the bug ref so we can vote for it ;-)

-- Adam

like image 24
Adam Cameron Avatar answered Sep 21 '22 12:09

Adam Cameron