ColdFusion подсчитать сумму без использования SQL - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь подсчитать сумму без использования кода SQL count(). Есть ли способ извлечь результаты, в том числе сумму по ColdFusion?

Select test
From ......
Where .....


<Cfif not test.RecordCount>
No records found
</Cfif>
<cfoutput query="test">#amount#</cfoutput>


It should display like this
TEST      CountOutput 
TEST A:   22
TEST B:   32
TEST B:    1
TEST C:   23

Ответы [ 4 ]

0 голосов
/ 22 июня 2018

Чтобы получить общее количество без использования SQL, используйте

QUERYVARIABLE.RECORDCOUNT

На основе условия, используемого в запросе SQL, он даст вам счет.

FOR Например,

<cfquery name="test">
SELECT * FROM database WHERE name=testA
</cfquery>
<cfdump var="#test.RECORDCOUNT#" />

Используйте это в функции, вызовите ее и сохраните возвращаемое значение в стеке или массиве.

0 голосов
/ 12 июня 2018

(из комментариев ...)

Почему вы не можете использовать SQL для этого?Если нет веской причины, по которой вы не можете использовать COUNT, это самый простой способ агрегирования.Вам не нужно знать конкретные значения в таблице базы данных, чтобы выполнить COUNT .Просто сделайте:

SELECT column, count(*) AS someAlias 
FROM   tableName 
GROUP BY column 

Да, в коде ColdFusion можно сделать то же самое, но опять же, если для этого нет особых причин, более эффективно использовать SQL.

0 голосов
/ 19 июня 2018
<cfset data = {} />
<cfset names = {} />

<cfloop query="test">
     <cfif not structKeyExists(data, test.name)>
         <cfset data[test.name] = 0 />
         <!--- if you need to preserve original case of name --->
         <cfset names[test.name] = test.name />
     </cfif>
     <cfset data[test.name] += 1 />
</cfloop>

<cfoutput>
    <cfloop collection="#data#" item="key">
        #names[key]#: #data[key]#<br />
    </cfloop>
</cfloop>
0 голосов
/ 12 июня 2018

I настоятельно рекомендуем использовать SQL Count ().Я не могу представить, почему вы захотите сделать это внутри CFLoop или CFOutput, но это возможно, если вы используете атрибут Group и подсчитываете каждую строку таким образом.

Знаете ли вы, что после выполнения CFQuery для вашего SQL-сервера, чтобы получить все эти подробные записи, вы можете выполнить «запрос запросов», чтобы суммировать данные SQL.Эта статья, кажется, объясняет это: https://www.quackit.com/coldfusion/tutorial/coldfusion_query_of_queries.cfm

...