Question

J'ai un objet de requête, avec, disons, quinze lignes retournées. Pour toutes fins utiles, je ne peux pas modifier le SQL qui génère l'objet de requête, mais je dois trier cet objet de requête par colonne. Est-il possible de le faire dans ColdFusion 7 sans avoir recours à une bibliothèque externe?

Edit: Je dois ajouter: Je l'ai exécuter une requête sur cet objet de requête et fait une clause ORDER BY dans cette requête de la requête. Y at-il une autre façon de le faire?

Était-ce utile?

La solution

Non, une requête de requête est la façon dont vous le faire. Il y a d'autres façons que vous pourriez singe autour avec les données, mais ils sont tous kludgey et ne seraient pas aussi simple glissement trimestriel.

L'une des puissances de glissement trimestriel (aka requêtes en mémoire) est qu'il peut être utilisé sur la requête retournée par une balise qui retourne un objet de requête, par exemple cfdirectory et CFPOP.

Pour les gens se demandent comment faire une requête de requête, il est simple:

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

Autres conseils

Même si cette question est déjà résolu que je veux ajouter, que vous pouvez également utiliser le type de méthode Java sous-jacente (), qui est une ligne juste besoin et vous n'avez pas besoin d'ajouter une UDF pour cela. Le code serait alors ressembler à ceci:

<cfset qQuery.sort(qQuery.findColumn("nameOfSortColumn"), TRUE)>

L'appel findColumn () est nécessaire pour obtenir l'index de la colonne de tri, car tri () travaille avec les index de colonne et non pas avec les noms de colonnes. Le deuxième paramètre spécifie l'ordre de tri:. TRUE = ascendant, descendant FAUX =

Avantages: appel d'une ligne, plus rapide que en glissement trimestriel

Inconvénient: trier limitée à une colonne

Il y a beaucoup plus de fonctionnalités cachées de la classe Java sous-jacente. Voir les liens ci-dessous pour plus d'informations:

Dans Lucee (testé avec 4.5 et 5.2) cela fonctionne aussi similaire, et encore plus simple:

<cfset qQuery.sort("nameOfSortColumn", "asc")>

L'espoir, cela donne quelques idées ...

S'il vous plaît vérifier l'URL suivante

http://www.coldfusioncookbook.com/ entrées / Comment-do-I-station-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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top