1

以下の cfml(sql) ステートメントを使用してデータベースにクエリを実行しようとしていますが、配列から各 stat_instance の結果を取得できるようにしたいのですが、最後の行にはループが含まれており、値ごとにクエリを生成する必要があると思います配列から

select 
    <cfif monthCrossover>
        statsMinEnd2 + 
    </cfif> 
    stats_min as time_stamp, 
    <cfif structKeyExists(avgThis, arguments.key)>
        avg
    <cfelse>
        sum
    </cfif>
    (stats_value) as stats_value 
from stats_kv_table_201207 
where 
    <cfif dayStart == dayEnd>
        stats_day = <cfqueryparam value="#dayStart#">
    <cfelse> 
        stats_day >= <cfqueryparam value="#dayStart#"> 
        and stats_day <= <cfqueryparam value="#dayEnd#">
    </cfif>
    and stats_min >= <cfqueryparam value="#statsMinStart1#"> and stats_min <= <cfqueryparam value="#statsMinEnd1#">
    and stats_component = <cfqueryparam value="#arguments.component#">
    <cfset instanceList = ListToArray(arguments.instance)>
    <cfif ArrayLen(instanceList) EQ 1>
        and stats_instance = <cfqueryparam value="#arguments.instance#">
    </cfif>
    <cfif ArrayLen(instanceList) GT 1>
        and stats_instance IN (<cfqueryparam value="#arguments.instance#" list="yes"/>)
    </cfif>
    <cfif ArrayLen(instanceList) GT 1 and ArrayContains(instanceList, "multi")>
        <cfloop index = "i" from="1" to="#arrayLen(instanceList)#"  array =#instanceList#> 
            <cfset stats_instance = <cfqueryparam value= #instanceList[i]#>
        </cfloop>
    </cfif>
4

2 に答える 2

1

私があなたの質問を正しく理解していれば、おそらくクエリで GROUP BY 句を使用して、合計/平均値を stats_instance でグループ化する必要があります。このようなもの:

SELECT stats_instance, ...
FROM ...
WHERE
... 
<cfif len(trim(arguments.instance))>
AND stats_instance IN (<cfqueryparam value="#arguments.instance#" list="yes"/>)
</cfif>
GROUP BY stats_instance
ORDER BY stats_instance

注: 構文は、データベース エンジンによって異なる場合があります。

于 2012-10-26T05:59:26.013 に答える
0

このようにすると何か問題がありますか?

<cfset myArr = ArrayNew(1) />
<cfloop array="myOtherArr" index="index">
    <cfquery name="myQuery" datasource="myDataSource">...</cfquery>
    <cfset ArrayAppend(myArr, myQuery.value) />
</cfloop>
于 2012-10-25T18:48:06.383 に答える