Leçon 11 / 17

Combiner tri et limite pour repérer des cas prioritaires

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

Objectif : Extraire les emprunts les plus anciens ou les retards associés aux emprunts les plus récents, en définissant l’ordre avant de limiter le résultat.

Quand une liste contient beaucoup d’emprunts, afficher seulement quelques lignes ne suffit pas : sans ordre choisi, vous ne savez pas lesquelles apparaîtront. Pour repérer des cas prioritaires, vous devez d’abord définir le classement voulu, puis limiter le nombre de lignes retournées.

Définir l’ordre avant de limiter

Vous connaissez déjà ORDER BY et LIMIT : la leçon sur le tri explique les ordres croissant et décroissant, et celle sur la limite montre comment réduire le nombre de lignes. Ici, vous les associez pour que la limite s’applique à une liste déjà classée. Dans la pratique, pensez donc à écrire le tri avant LIMIT : les lignes conservées sont les premières de cet ordre.

Pour examiner les cinq emprunts les plus anciens, classez les dates d’emprunt de la plus ancienne à la plus récente avec ASC, puis gardez cinq lignes. La sélection explicite de colonnes permet de lire l’identifiant et les dates utiles sans demander toutes les colonnes de la table. Cette requête s’ajoute à la suite de vos requêtes existantes dans requetes.sql.

SQL
-- Repérer les cinq emprunts les plus anciens
SELECT id_emprunt, id_adherent, id_exemplaire, date_emprunt, date_retour_prevue
FROM emprunts
ORDER BY date_emprunt ASC
LIMIT 5;
Résultat attendu
Au plus cinq lignes, classées de la date d’emprunt la plus ancienne à la plus récente.

La requête ne garantit pas cinq lignes : si la table contient moins de cinq emprunts, elle en renvoie simplement moins. Elle ne modifie pas les données. Elle produit un résultat de consultation, dont l’ordre dépend du critère indiqué dans ORDER BY.

Appliquer le même principe aux retards

La table retards contient l’identifiant du retard, l’identifiant de l’emprunt, le nombre de jours de retard et les frais, mais elle ne possède pas de colonne de date d’enregistrement. Vous ne pouvez donc pas classer directement les retards selon leur date de création. Pour repérer les retards associés aux emprunts les plus récents, vous pouvez utiliser la date_emprunt de la table emprunts et relier les deux tables par leur clé étrangère, comme vous l’avez appris dans la leçon sur INNER JOIN.

SQL
-- Afficher les cinq retards liés aux emprunts les plus récents
SELECT r.id_retard, r.id_emprunt, r.jours_retard, r.frais, e.date_emprunt
FROM retards AS r
INNER JOIN emprunts AS e
    ON e.id_emprunt = r.id_emprunt
ORDER BY e.date_emprunt DESC, r.id_retard DESC
LIMIT 5;
Résultat attendu
Au plus cinq retards, associés aux dates d’emprunt les plus récentes. En cas de date d’emprunt identique, l’identifiant du retard départage les lignes.

Dans ce second exemple, DESC place les dates les plus récentes en premier. Le critère secondaire r.id_retard DESC donne un ordre explicite aux lignes dont la date_emprunt est identique ; il ne signifie pas que le retard lui-même a été enregistré plus tard. Si votre besoin porte réellement sur la date de création d’un retard, le schéma actuel ne fournit pas cette information.

Exécutez chaque requête dans votre client MariaDB pour vérifier les colonnes, le nombre de lignes et leur ordre. Les résultats réels dépendent des données présentes dans la base ; l’indication « au plus cinq » décrit une limite, pas un résultat garanti. Conservez ces deux requêtes commentées à la suite du contenu déjà présent dans requetes.sql.

À retenir

  • Choisissez d’abord le critère et le sens du tri, puis ajoutez LIMIT pour ne conserver que les premières lignes.
  • Utilisez ASC pour repérer les emprunts les plus anciens et DESC pour placer les plus récents en premier.
  • Ajoutez un second critère de tri pour départager les lignes dont la valeur principale est identique.
  • Vérifiez que le schéma contient bien la date correspondant à la question : la table retards ne contient pas de date de création.

Dans la prochaine leçon, vous apprendrez à compter des lignes et des valeurs renseignées pour produire de premiers indicateurs.

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.