たとえば、15行が返されるクエリオブジェクトがあります。すべての目的と目的で、クエリオブジェクトを生成するSQLを変更することはできませんが、このクエリオブジェクトを列で並べ替える必要があります。外部ライブラリを使用せずにColdFusion7でこれを行う方法はありますか?
編集:追加する必要があります:このクエリオブジェクトに対してクエリを実行し、クエリORDER BY
のこのクエリで句を実行しました。これを行う別の方法はありますか?
たとえば、15行が返されるクエリオブジェクトがあります。すべての目的と目的で、クエリオブジェクトを生成するSQLを変更することはできませんが、このクエリオブジェクトを列で並べ替える必要があります。外部ライブラリを使用せずにColdFusion7でこれを行う方法はありますか?
編集:追加する必要があります:このクエリオブジェクトに対してクエリを実行し、クエリORDER BY
のこのクエリで句を実行しました。これを行う別の方法はありますか?
いいえ、クエリのクエリはこれを行う方法です。データをいじくり回す方法は他にもありますが、それらはすべて扱いにくく、QoQほど簡単ではありません。
QoQ(別名インメモリクエリ)の利点の1つは、クエリオブジェクトを返す任意のタグ(CFDIRECTORYやCFPOPなど)によって返されるクエリで使用できることです。
クエリのクエリを実行する方法を疑問に思っている人にとっては、簡単です。
<cfquery name="resortQuery" dbtype="query">
SELECT *
FROM myQueryFromSomewhereElse
WHERE
COLUMN_NAME=<cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#myFilterValue#" />
ORDER BY
SOME_OTHER_COLUMN_NAME ASC
</cfquery>
この質問がすでに解決されている場合でも、追加したいのですが、基礎となるJavaメソッドsort()を使用することもできます。これは、1行必要であり、このためにUDFを追加する必要はありません。コードは次のようになります。
<cfset qQuery.sort(qQuery.findColumn("nameOfSortColumn"), TRUE)>
sort()は列名ではなく列インデックスを処理するため、sortColumnのインデックスを取得するにはfindColumn()呼び出しが必要です。2番目のパラメーターは、ソート順を指定します。TRUE=昇順、FALSE=降順。
利点:QoQよりも高速な1回線通話
短所:並べ替えが1列に制限されている
基盤となるJavaクラスにはさらに多くの隠された機能があります。詳細については、次のリンクを参照してください。
Lucee(4.5および5.2でテスト済み)でも、これは同様に機能し、さらに単純です。
<cfset qQuery.sort("nameOfSortColumn", "asc")>
うまくいけば、これはいくつかのアイデアを与えます...
Please check the next url
http://www.coldfusioncookbook.com/entries/How-do-I-resort-a-query.html
<cfquery name="original" datasource="foo" >
select name, age, rank
from people
order by age asc
</cfquery>
<!--- Resort by name --->
<cfquery name="newQuery" dbtype="query">
select name, age, rank
from original
order by name asc
</cfquery>