ORDER BY

Tri des résultats renvoyés

14/06/2008 1800 lectures 0 commentaire 5/5 (4 votes)
Il est fréquent qu'une requête SQL renvoie un grand nombre de données. Si ces données sont destinées à être affichées sur une page web, il pourrait être intéressant qu'elles soient triées, afin qu'elles n'apparaissent pas n'importe comment. ORDER BY est une clause de la requête SELECT permettant de trier les résultats renvoyés. Le tri s'effectue sur la valeur de la colonne spécifiée après le ORDER BY. Plusieurs valeurs peuvent être indiquées, auquel cas, le tri s'effectuera sur la première et si dans celle-ci, il y a des données similaires, le tri s'effectuera sur les valeurs de la deuxième colonne. Il est également possible de déterminer l'ordre dans lequel seront triées les données, soit ascendant, soit descendant.

Voici la syntaxe de cette clause :



Le tri des colonnes peut soit se faire en spécifiant le nom de la colonne à trier, soit en spécifiant le numéro correspondant à cette colonne. Imaginons que la requête retourne des résultats avec 3 colonnes : Nom, Prenom et Age. Nom aura la valeur 1, Prenom aura la valeur 2 et Age aura la valeur 3. ASC indique que ce sera un tri croissant alors que DESC indique que le tri sera décroissant.

Nous utiliserons la table suivante pour l'exemple :

Image


Imaginons d'abord la requête suivante :



L'exécution de cette requête provoquera le résultat suivant :

Image

Jusque là, pas de surprise. Nous allons maintenant essayer de trier ce résultat par prénom dans le sens décroissant. Nous utiliserons donc la clause ORDER BY sur la colonne PRENOM de cette manière :



Le résultat renvoyé par cette requête sera le suivant :

Image


Comme vous le voyez, ce résultat sera trié selon la colonne PRENOM dans un ordre décroissant. Imaginez maintenant que vous désiriez récupérer ce même résultat mais avec les ages des personnes triés du plus petit au plus grand, mais les prénoms doivent rester triés dans un ordre décroissant. Autrement dit, on ne verra la différence que pour les doublons, par exemple, les deux Nicolas. les résultats devraient être inversés car 25 est plus petit que 45. La requête pour faire cela est donc la suivante :



Le résultat renvoyé par cette requête est le suivant :

Image


Comme vous le voyez, désormais, les 2 enregistrements concernant les Nicolas sont inversés. Effectivement, le tri est tout d'abord effectué dans l'ordre décroissant sur la colonne PRENOM et ensuite effectué sur la colonne AGE dans l'ordre croissant. Vous pouvez trier vos résultat de toute les façons possibles grâce à cette clause.

Voter :

0 commentaires

Ajouter un commentaire