Trier par description. Travailler avec la base de données. Tri des données à la suite d'une requête SQL. Ordre de la commande ORDER BY dans une requête

Il est souvent nécessaire d'afficher le résultat d'une requête dans un certain ordre, par exemple par ordre alphabétique. A cet effet, le SGBD a fonction spéciale sur Langage SQL- le tri. Dans ce cas, le programmeur peut choisir quels champs et dans quel ordre ils apparaîtront afin d'obtenir le résultat souhaité, sans utiliser de compétences sérieuses en programmation.

Qu’est-ce que le tri dans une base de données ?

Travailler avec des bases de données est constamment associé à une grande quantité d'informations qui doivent être organisées. Actuellement, il existe un certain nombre de SGBD dotés d'un large éventail de fonctions, dont les plus populaires sont Oracle et MS SQL. Le tri des informations, en tant qu'une des principales procédures de travail avec des bases de données, est assuré par une fonction spéciale intégrée dans chacune d'elles.

Les données de classement vous permettent de simplifier le processus de recherche et, dans certains cas, aident à résoudre certains problèmes ou à optimiser le fonctionnement du programme. Le tri SQL est effectué par un champ sélectionné séparément, et si nécessaire, s'il y a des valeurs identiques dans les éléments de ce champ, vous pouvez spécifier Options supplémentaires, définissant l'emplacement des lignes.

Commande de tri

Le tri SQL dans la base de données est assuré à l'aide de la fonction ORDER BY. Ainsi, lors de la sortie d'informations d'une base de données, après avoir spécifié les colonnes et les tables à partir desquelles la lecture sera effectuée, la requête doit spécifier une commande de tri, puis déterminer le ou les champs par lesquels le tri sera effectué.

Par exemple, si vous avez besoin d'obtenir des données des champs Nom et Âge de la table Personnes, tout en affichant le résultat par ordre alphabétique dans la colonne Nom, la requête suivante vous aidera : SELECT Nom, Âge FROM Personnes ORDER PAR Nom.

Comment définir l'ordre de tri ?

Les conditions modernes imposent diverses tâches aux programmeurs, et parfois il est nécessaire de prédéterminer dans quel ordre le résultat sera affiché - par ordre décroissant ou croissant, par ordre alphabétique ou par ordre inverse ? Et pour ce faire en SQL, l’ordre de tri est déterminé en ajoutant un mot-clé à la requête. Après avoir sélectionné les champs et les tables à partir desquels les informations souhaitées seront obtenues, vous devez ajouter ORDER BY, puis préciser le nom de la colonne selon laquelle vous souhaitez trier.

Pour obtenir l'ordre inverse, vous devez spécifier le paramètre DESC après le nom. S'il est nécessaire de classer les éléments selon deux ou plusieurs critères, alors les colonnes sont indiquées séparées par des virgules, et la priorité dans le classement sera donnée au champ arrivant en premier dans la liste. Il est à noter que le paramètre DESC permet de disposer les éléments dans l'ordre inverse dans un seul champ, après le nom duquel ce mot-clé est indiqué, donc si nécessaire, il doit être précisé dans toutes les colonnes sélectionnées.

Méthodes de tri alternatives

S'il n'est pas possible d'utiliser la fonction de tri SQL intégrée, vous pouvez écrire l'un des algorithmes bien connus. Si vous devez obtenir le classement des éléments le plus rapide, vous devez utiliser une méthode basée sur la division du tableau d'éléments en deux. Sont également très populaires les méthodes de classement par « bulle », dans lesquelles deux éléments adjacents sont intervertis s'ils sont mal positionnés, le « tri pyramidal », qui envoie le plus grand élément à la fin de la liste, et le « tri par insertion », qui prédétermine l'emplacement de chaque élément à son tour.

Écrire vous-même un algorithme n'augmentera pas de manière significative la vitesse de tri, mais cela contribuera au développement des compétences en programmation et vous permettra également de modifier le processus en ajustant le schéma de classement à une base de données spécifique pour améliorer l'efficacité du programme.

Lors de la récupération de données, il peut être important de les obtenir sous une certaine forme ordonnée. Le tri peut être effectué par n'importe quel champ avec n'importe quel type de données. Il peut s'agir d'un tri croissant ou décroissant pour les champs numériques. Pour les champs de caractères (texte), ils peuvent être triés par ordre alphabétique, bien qu'ils soient également triés par ordre croissant ou décroissant. Il peut également être effectué dans n'importe quelle direction - de A à Z et vice versa de Z à A.

L’essence du processus de tri est de réduire la séquence à un certain ordre. Vous pouvez en apprendre davantage sur le tri dans l'article « Algorithmes de tri ». Par exemple, trier une séquence de nombres arbitraires par ordre croissant :

2, 4, 1, 5, 9

devrait donner lieu à une séquence ordonnée :

1, 2, 4, 5, 6

De même, lors du tri par ordre croissant des valeurs de chaîne :

Ivanov Ivan, Petrov Pierre, Ivanov Andreï

le résultat devrait être :

Ivanov Andreï, Ivanov Ivan, Petrov Petrov

Ici, la ligne «Andrey Ivanov» a été déplacée au début, puisque la comparaison des chaînes s'effectue caractère par caractère. Les deux lignes commencent par les mêmes caractères « Ivanov ». Étant donné que le symbole « A » dans le mot « Andrey » apparaît plus tôt dans l'alphabet que le symbole « I » dans le mot « Ivan », cette ligne sera placée plus tôt.

Tri dans une requête SQL

Pour effectuer le tri, vous devez ajouter la commande ORDER BY à la chaîne de requête. Après cette commande, le champ par lequel le tri est effectué est indiqué.

Par exemple, nous utilisons les marchandises de table :

num
(Numéro d'article)
titre
(Nom)
prix
(prix)
1 mandarin50
2 Pastèque120
3 Un ananas80
4 Banane40

Les données ici sont déjà classées par la colonne "num". Maintenant, construisons une requête qui affichera un tableau avec les produits triés par ordre alphabétique :

SÉLECTIONNER * À PARTIR DE marchandises COMMANDER PAR titre

SELECT * FROM marchandises – spécifie de sélectionner tous les champs de la table des marchandises ;

ORDER BY – commande de tri ;

titre – la colonne par laquelle le tri sera effectué.

Le résultat de l’exécution d’une telle demande est le suivant :

num titre prix
3 Un ananas80
2 Pastèque120
4 Banane40
1 mandarin50

Vous pouvez également trier n'importe lequel des champs du tableau.

Sens de tri

Par défaut, la commande ORDER BY trie par ordre croissant. Pour contrôler manuellement le sens du tri, utilisez le mot-clé ASC (croissant) ou DESC (décroissant) après le nom de la colonne. Ainsi, pour afficher notre tableau par ordre décroissant des prix, vous devez poser la requête comme ceci :

SÉLECTIONNER * À PARTIR DE marchandises COMMANDER PAR prix DESC

Le tri par prix croissant sera :

SÉLECTIONNER * À PARTIR DE marchandises COMMANDER PAR prix ASC

Tri par plusieurs champs

SQL permet le tri sur plusieurs champs à la fois. Pour ce faire, après la commande ORDER BY, les champs obligatoires sont indiqués séparés par des virgules. L'ordre du résultat de la requête sera configuré dans le même ordre dans lequel les champs de tri sont spécifiés.

colonne1 colonne2 colonne3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 un
1 3 un
3 4 un

Trions le tableau selon les règles suivantes :

SÉLECTIONNER * FROM ma table ORDER BY colonne1 ASC, colonne2 DESC, colonne3 ASC

Ceux. la première colonne est ascendante, la seconde est descendante, la troisième est à nouveau ascendante. La requête classera les lignes par première colonne, puis, sans enfreindre la première règle, par deuxième colonne. Et puis, aussi, sans violer les règles existantes, selon le troisième. Le résultat sera un ensemble de données comme celui-ci :

colonne1 colonne2 colonne3
1 3 un
1 3 c
1 2 un
2 2 b
2 1 b
3 1 un
3 1 c

Ordre de la commande ORDER BY dans une requête

Le tri des lignes est le plus souvent effectué avec une condition de sélection des données. La commande ORDER BY est placée après la condition de sélection WHERE. Par exemple, nous sélectionnons des produits dont le prix est inférieur à 100 roubles, triés par nom par ordre alphabétique :

SÉLECTIONNER * DE marchandises OÙ prix 100 COMMANDER PAR prix ASC

La clause ORDER BY dans Access trie les enregistrements renvoyés par une requête par ordre croissant ou décroissant des valeurs du ou des champs spécifiés.

Syntaxe

SÉLECTIONNER liste de champ
DEPUIS tableau
condition_sélection
[, champ2 ][, ...]]]

Une instruction SELECT contenant une clause ORDER BY comprend les éléments suivants :

Remarques

La clause ORDER BY est facultative. Il doit être utilisé lorsque vous devez afficher des données sous forme triée.

L'ordre de tri par défaut est croissant (A à Z, 0 à 9). Les deux exemples ci-dessous montrent le tri des noms d'employés par nom de famille.

SELECT Nom, Prénom
DES Employés
COMMANDER PAR Nom ;
SELECT Nom, Prénom
DES Employés
COMMANDER PAR Nom ASC ;

Pour trier par ordre décroissant (Z à A, 9 à 0), ajoutez le mot réservé DESC à la fin de chaque champ selon lequel vous souhaitez trier les enregistrements. L'exemple ci-dessous trie les noms des employés par ordre décroissant de salaire.

SELECT Nom, Salaire
DES Employés
COMMANDER PAR Salaire DESC, Nom ;

Si vous spécifiez un champ dans la clause ORDER BY qui contient des données de type Mémo ou Objets OLE, une erreur se produira. Cœur SGBD Microsoft Access ne prend pas en charge le tri selon ces types de champs.

La clause ORDER BY est généralement le dernier élément d'une instruction SQL.

Vous pouvez inclure des champs supplémentaires dans la clause ORDER BY. Les enregistrements sont d'abord triés selon le champ spécifié en premier dans la clause ORDER BY. Les enregistrements avec les mêmes valeurs de premier champ sont ensuite triés selon le deuxième champ spécifié, et ainsi de suite.


Cycle suivant :

Étape 8 : Tri simple

Si le résultat de votre requête SQL doit devenir la source d'un rapport, alors la question du tri des données qu'il contient devient extrêmement importante, car il est très difficile pour une personne lisant un rapport qui n'est pas correctement trié de trouver rapidement le l'information dont ils ont besoin. Pour trier les données par colonnes de résultats de requête (dans notre cas, par champs de table), SQL utilise le mot-clé ORDER BY. Un exemple du tri le plus simple est donné ci-dessous. La base est tirée de la demande de l’étape 2 : « Demande avec un critère de sélection simple ». Nous trions les employés selon le champ S_NAME (nom complet).

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Trier le résultat d'une requête SQL par un champ.

Étape 9. Tri complexe

Il est souvent, et même presque toujours, nécessaire de trier les données sur plusieurs colonnes et pas toujours par ordre croissant. La syntaxe SQL suppose qu'après le mot-clé ORDER BY, une liste de colonnes séparées par une virgule, ainsi qu'une méthode de tri pour chaque colonne : par ordre croissant de valeurs - ASC ou par ordre décroissant - DESC. Dans l'exemple ci-dessous, nous affichons les enregistrements de tous les employés par ordre décroissant de leur ancienneté. Nous trions les salariés ayant la même ancienneté par ordre alphabétique.

SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Trier le résultat d'une requête SQL selon deux champs.

Très souvent, l'ordre de tri inversé est utilisé avec des colonnes comme [date]. Si la date stocke, par exemple, la date à laquelle les informations ont été saisies, alors lors du tri inversé, les enregistrements récemment ajoutés par rapport au reste apparaissent au tout début de la liste. Si la requête récupère les annonces d'actualité de la base de données, nous recevons alors une liste d'annonces triées par ordre décroissant de leur pertinence, ce qui peut être extrêmement utile, car les annonces sont généralement lues de haut en bas et sur les sites d'actualités, elles ne sont pas toutes affichées. , mais seulement quelques-uns des plus « frais ».




Haut