2011-08-16 33 views
7

Tôi muốn sử dụng hàm count() trong đối tượng truy vấn ColdFusion.Sử dụng hàm count() trong truy vấn ColdFusion của truy vấn

Đây là mã và thử nghiệm của tôi:

<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> 

Tôi có nên sử dụng chức năng chuyển đổi? Giống như nếu tổng số là [enpty string] thì kết quả sẽ là 0. Hoặc có cách nào khác phù hợp nhất để làm điều đó không?

+0

Về cơ bản không MATH chức năng 'count' nhưng đếm số hàng như 'count (*)' trong SQL server – Vikas

Trả lời

10

Nó có vẻ như đây là một lỗi, tuy nhiên có là một cách dễ dàng xung quanh nó. Chỉ cần bọc y.total vào val(), do đó, nó sẽ đọc:

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

val() sẽ trả về 0 nếu một chuỗi rỗng được chuyển cho nó.

+0

Tôi đã kết thúc bằng cách sử dụng 'recordCount'. Nhưng điều này có vẻ tốt hơn. – Vikas

2

Tôi nghĩ rằng bạn đã tìm thấy một lỗi trong CF tại đây (có thể đăng nhập nó @http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html).

Truy vấn đầu tiên phải trả về 0, không phải [không có gì]!

Trong ví dụ đơn giản của bạn, tôi nghĩ chỉ cần phân phối hoàn toàn với QoQ và chỉ sử dụng x.recordCount.

Nhưng rõ ràng điều này không phải là nhiều chop nếu bạn có bộ lọc WHERE trong QoQ của bạn, trong trường hợp này, bạn sẽ cần phải làm điều gì đó giống như bạn đề xuất. Tôi không thể thấy một cách tiếp cận tốt hơn ở đây.

Nếu bạn nâng cao mà lỗi với Adobe, cho chúng tôi biết ref lỗi vì vậy chúng tôi có thể bỏ phiếu cho nó ;-)

- Adam

+0

Đã có một lỗi được báo cáo chưa? Tôi đã không tìm thấy một. – Tobias

+0

Heh. Tôi đã có một tìm kiếm xung quanh trong căn cứ lỗi, và nhận thấy thực sự * Tôi * nêu ra một lỗi cho điều này trở lại trong năm 2008: http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=73559. Nó không hoàn toàn giống nhau, nhưng nó thể hiện cùng một vấn đề. –

+0

Cảm ơn. Bây giờ tôi đã làm việc với một workaround, giống như tất cả những người khác, những người đã có vấn đề này. btw: liên kết này chỉ hoạt động, nếu tôi đăng nhập? – Tobias

-1

Nếu bạn chỉ muốn số lượng hàng trong sử dụng truy vấn đối tượng de: # # x.recordcount

Các vấn đề liên quan