2011-08-16 2 views
7

Volevo utilizzare la funzione count() nell'oggetto Query ColdFusion.Utilizzare la funzione count() nella query ColdFusion della query

Ecco il mio codice e 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> 

dovrei usare la funzione di convertire? Come se il totale fosse [enpty string], il risultato dovrebbe essere 0. Oppure esiste un altro modo migliore/corretto per farlo?

+0

Fondamentalmente non funzione matematica 'CONTO' ma contare il numero di fila come' count (*) 'in SQL Server – Vikas

risposta

10

Sembra come questo è un bug, tuttavia ci è un modo semplice per aggirarlo. Basta avvolgere il y.total in val(), quindi sarebbe leggere:

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

val() restituirà 0 se una stringa vuota viene passata ad esso.

+0

Ho finito con l'uso di 'recordCount'. Ma questo sembra migliore. – Vikas

2

Penso che tu abbia trovato un bug nel CF qui (forse loggalo @http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html).

La prima query deve restituire 0, non [niente]!

Nel tuo semplice esempio, penso di fare a meno di QoQ interamente, e basta usare x.recordCount.

Ma ovviamente questo non è un gran chop se hai un filtro WHERE nel tuo QoQ, nel qual caso avrai bisogno di fare qualcosa come suggerisci tu. Non riesco a vedere un approccio migliore qui.

Se alzi il bug con Adobe, farci sapere l'arbitro bug in modo che possiamo votare a favore ;-)

- Adam

+0

C'è già un bug segnalato? Non l'ho trovato. – Tobias

+0

Heh. Ho fatto una ricerca nel bugbase e ho notato che * I * ha sollevato un bug per questo nel 2008: http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=73559. Non è esattamente la stessa cosa, ma sta dimostrando lo stesso problema. –

+0

Grazie. Ora ho lavorato con un workaround, come tutti gli altri, che hanno avuto questo problema. btw: questo link funziona solo se sono loggato? – Tobias

-1

Se si desidera solo il numero di righe in uso de query oggetto: # # x.recordcount