3

たとえば、15行が返されるクエリオブジェクトがあります。すべての目的と目的で、クエリオブジェクトを生成するSQLを変更することはできませんが、このクエリオブジェクトを列で並べ替える必要があります。外部ライブラリを使用せずにColdFusion7でこれを行う方法はありますか?

編集:追加する必要があります:このクエリオブジェクトに対してクエリを実行し、クエリORDER BYのこのクエリで句を実行しました。これを行う別の方法はありますか?

4

3 に答える 3

14

いいえ、クエリのクエリはこれを行う方法です。データをいじくり回す方法は他にもありますが、それらはすべて扱いにくく、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>
于 2009-07-22T17:10:26.477 に答える
12

この質問がすでに解決されている場合でも、追加したいのですが、基礎となる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")>

うまくいけば、これはいくつかのアイデアを与えます...

于 2010-08-27T08:04:49.200 に答える
0

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>
于 2011-08-18T03:49:45.097 に答える