Используйте функцию count () в запросе ColdFusion запроса - PullRequest
7 голосов
/ 16 августа 2011

Я хотел использовать функцию count() в объекте ColdFusion Query.

Вот мой код и тест:

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

Должен ли я использовать функцию преобразования?Например, если total равен [enpty string], то результатом должно быть 0. Или есть ли другой лучший / правильный способ сделать это?

Ответы [ 3 ]

10 голосов
/ 16 августа 2011

Похоже, что это ошибка, однако есть простой способ обойти это. Просто оберните y.total в val (), чтобы оно выглядело так:

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

val () вернет 0, если ему будет передана пустая строка.

2 голосов
/ 16 августа 2011

Я думаю, что вы нашли ошибку в CF здесь (возможно, зарегистрируйте ее @ http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html).

Первый запрос должен вернуть 0, а не [ничего]!

В вашем простом примереЯ думаю, что просто обойтись без QoQ и просто использовать x.recordCount.

Но, очевидно, это не слишком много, если у вас есть фильтр WHERE в вашем QoQ, и в этом случае вам нужно будет сделатьчто-то вроде того, что вы предлагаете. Я не вижу лучшего подхода здесь.

Если вы поднимете эту ошибку в Adobe, дайте нам знать ссылку на ошибку, чтобы мы могли проголосовать за нее; -)

- Адам

0 голосов
/ 17 августа 2011

Если вы просто хотите, чтобы количество строк в объекте запроса использовалось: # x.recordcount #

...