Comment trier un objet de requête dans ColdFusion 7?
-
19-09-2019 - |
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?
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:
- http://www.zrinity.com/developers/mx/undocumentation /query.cfm
- www.anujgakhar.com/ 2008/02/01 / cfquery-et-la-java-objets sous-jacents /
- www.bennadel.com/blog/204-Using-ColdFusion-Query-s-Underlying-Java-Methods-For-Query-Manipulation-And-Logic.htm
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>