Leçon 9 / 17

Trier les résultats par une ou plusieurs colonnes

15 min SQL — interroger une base de données Gratuit

Objectif : Classer les œuvres ou les emprunts dans l’ordre demandé, avec un critère secondaire si nécessaire.

Une liste de résultats peut contenir toutes les bonnes lignes sans être présentée dans l’ordre attendu. Pour consulter les œuvres par année, ou retrouver les emprunts les plus récents en premier, vous devez préciser un tri. Vous allez utiliser ORDER BY pour indiquer les colonnes de classement et le sens de ce classement.

Les notions de sélection des colonnes et de filtrage avec WHERE ont été vues dans les leçons précédentes. Le tri ne remplace ni la sélection ni le filtre : il détermine seulement l’ordre dans lequel les lignes retenues sont présentées. Dans la médiathèque, vous pouvez ainsi classer les œuvres ou les emprunts sans modifier les données enregistrées.

Trier dans l’ordre croissant ou décroissant

Placez ORDER BY après la table et, le cas échéant, après le filtre. Indiquez ensuite le nom de la colonne qui sert au classement. Avec ASC, les valeurs sont classées par ordre croissant ; avec DESC, elles le sont par ordre décroissant. Pour du texte, l’ordre croissant correspond généralement à l’ordre alphabétique ; pour une date, il va de la plus ancienne à la plus récente.

SQL
-- Classer les œuvres de la plus ancienne à la plus récente
SELECT titre, annee_parution
FROM oeuvres
ORDER BY annee_parution ASC;

Dans cette requête, chaque ligne du résultat présente le titre et l’année de parution d’une œuvre. Le classement porte sur annee_parution : les années les plus basses apparaissent d’abord. Vous pouvez omettre ASC, car le sens croissant est le comportement par défaut, mais l’écrire rend l’intention plus claire pour les personnes qui reliront votre requête.

SQL
-- Afficher les emprunts les plus récents en premier
SELECT id_emprunt, id_adherent, date_emprunt
FROM emprunts
ORDER BY date_emprunt DESC;

Ici, DESC place la date la plus récente au début du résultat. Vous pouvez appliquer ce sens à une colonne numérique pour afficher les valeurs les plus élevées d’abord, ou à du texte pour inverser l’ordre alphabétique. Chaque colonne peut avoir son propre sens de tri lorsqu’une requête en classe plusieurs.

Ajouter un critère secondaire

Plusieurs lignes peuvent avoir la même valeur pour le premier critère. Par exemple, plusieurs œuvres peuvent avoir la même année de parution. Pour préciser leur ordre relatif, ajoutez une seconde colonne après une virgule dans la clause ORDER BY. Le tri secondaire s’applique à l’intérieur des lignes à égalité sur le premier critère.

SQL
-- Classer les œuvres par année, puis par titre
SELECT titre, annee_parution
FROM oeuvres
ORDER BY annee_parution ASC, titre ASC;

Les œuvres sont d’abord classées par année, de la plus ancienne à la plus récente. Pour les œuvres de même année, le titre est ensuite classé par ordre alphabétique. Le résultat est ainsi plus lisible et prévisible qu’un tri sur l’année seule, qui ne précise pas comment ordonner les lignes ayant la même valeur.

SQL
-- Classer les emprunts par date décroissante, puis par identifiant
SELECT id_emprunt, id_adherent, date_emprunt
FROM emprunts
ORDER BY date_emprunt DESC, id_emprunt ASC;

Dans ce dernier exemple, les emprunts les plus récents viennent d’abord. Si plusieurs emprunts ont la même date, leur identifiant les départage dans l’ordre croissant. Pour chaque critère, choisissez un sens qui correspond à la demande ; il n’est pas nécessaire qu’ils soient tous identiques.

Ajoutez ces requêtes complètes à la suite du contenu existant de requetes.sql, en conservant leurs commentaires. Testez-les dans MariaDB 11 et vérifiez que les colonnes affichées correspondent à l’ordre demandé. Les prochaines leçons montreront comment réduire le nombre de lignes retournées et repérer des cas prioritaires.

À retenir

  • ORDER BY colonne indique le critère de classement.
  • ASC classe les valeurs par ordre croissant ; DESC les classe par ordre décroissant.
  • Séparez les critères secondaires par des virgules et précisez le sens de chacun si nécessaire.
  • Ajoutez un critère secondaire pour départager les lignes à égalité sur le premier critère.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.