11
Chapitre 11 sur 21

Trier les données (ORDER BY)

Un résultat non trié est souvent difficile à lire. Avec ORDER BY, vous choisissez l’ordre : alphabétique, plus récent d’abord, meilleures notes en premier, etc.

ORDER BY : donner un ordre à votre résultat

Même avec un bon filtre, vos données peuvent sortir “dans n’importe quel ordre”. En SQL, si vous ne demandez pas un tri, la base peut renvoyer les lignes dans un ordre non garanti. ORDER BY vous permet de choisir un ordre logique et utile.

🗂️

Analogie : trier un classeur

Vous avez des fiches (lignes). Vous pouvez les trier par nom, par date, ou par note. ORDER BY, c’est le “tri” de votre classeur.

📖

Définition : ORDER BY

ORDER BY ordonne les lignes du résultat selon une ou plusieurs colonnes. Par défaut, le tri est ASC (croissant).

Où placer ORDER BY dans une requête ?

La structure classique :

SELECT colonnes
FROM table
WHERE condition
ORDER BY colonne1 [ASC|DESC];

Mémo rapide

SELECT (quoi) → FROM (où) → WHERE (filtrer) → ORDER BY (trier).

ASC et DESC : croissant ou décroissant

⬆️

ASC (par défaut)

Ordre croissant (A → Z, 0 → 9, ancien → récent selon la colonne).

SELECT titre, auteur
FROM livres
ORDER BY titre ASC;
⬇️

DESC

Ordre décroissant (Z → A, 9 → 0, récent → ancien).

SELECT titre, annee
FROM films
ORDER BY annee DESC;

Cas typique : “meilleurs d’abord”

Pour afficher les meilleures notes en premier :

SELECT titre, note
FROM films
ORDER BY note DESC;
🧠

À retenir

Si vous n’écrivez rien, c’est ASC.

Écrivez DESC quand vous voulez “le plus grand / le plus récent” en premier.

Trier sur plusieurs colonnes : tri principal + tri secondaire

Très utile quand plusieurs lignes ont la même valeur sur une colonne. Vous donnez un tri “principal”, puis un tri “secondaire”.

-- 1) Trier par auteur (A→Z), puis par titre (A→Z)
SELECT auteur, titre
FROM livres
ORDER BY auteur ASC, titre ASC;
-- 1) Trier par note (desc), puis par année (desc)
SELECT titre, note, annee
FROM films
ORDER BY note DESC, annee DESC;

Comment lire un tri multi-colonnes

“Je trie d’abord par note. Si deux films ont la même note, je trie ces deux films par année.”

Trier par une colonne calculée ou un alias

Si vous avez une expression ou un alias dans SELECT, vous pouvez souvent l’utiliser dans ORDER BY. Cela dépend du SGBD, mais c’est très courant (SQLite, MySQL, etc.).

-- Trier par une colonne calculée (note sur 100)
SELECT titre, note, note * 10 AS note_sur_100
FROM films
ORDER BY note_sur_100 DESC;
⚠️

Bonne pratique

Si votre outil SQL refuse l’alias, réécrivez l’expression directement dans ORDER BY : ORDER BY note * 10 DESC. C’est plus universel.

Et si certaines valeurs sont NULL ?

Les valeurs NULL peuvent apparaître en haut ou en bas selon le SGBD. L’important pour débuter : retenir que NULL se comporte “à part”.

-- Trier par email : attention, certains emails peuvent être NULL
SELECT nom, email
FROM clients
ORDER BY email ASC;
💡

Astuce simple

Si les NULL vous gênent, filtrez-les avant : WHERE email IS NOT NULL.

Guide pas à pas : trier des listes comme sur un vrai site

1

Lister les livres par ordre alphabétique

SELECT titre, auteur
FROM livres
ORDER BY titre ASC;

Résultat : un listing “propre”, comme un catalogue.

2

Lister les films du plus récent au plus ancien

SELECT titre, annee
FROM films
ORDER BY annee DESC;

Résultat : “les nouveautés d’abord”.

3

Top films : note décroissante, et année pour départager

SELECT titre, note, annee
FROM films
ORDER BY note DESC, annee DESC;

Résultat : le classement le plus “logique”.

Compétence clé

Beaucoup d’écrans d’applications sont “SELECT + WHERE + ORDER BY”. Vous êtes en train de construire une base très solide.

Erreurs courantes avec ORDER BY

“no such column” dans ORDER BY

Cause : faute de frappe, ou alias non reconnu.

Solution : vérifiez le nom exact, ou réécrivez l’expression.

Résultat “bizarre” sur du texte

Cause : accents/maj/min, collations, valeurs NULL.

Solution : pour débuter, observez et testez. On approfondira plus tard si besoin.

Oublier DESC

Cause : par défaut c’est ASC, donc les “meilleurs” ne sortent pas en premier.

Solution : écrire explicitement DESC quand on veut un classement.

Exercice pratique : 6 tris “comme en entreprise”

Choisissez la table films ou livres selon ce que vous avez dans votre base.

1) Films : du plus récent au plus ancien

SELECT titre, annee FROM films
ORDER BY annee DESC;

2) Films : meilleurs notés d’abord

SELECT titre, note FROM films
ORDER BY note DESC;

3) Films : note puis année (départage)

SELECT titre, note, annee FROM films
ORDER BY note DESC, annee DESC;

4) Livres : par auteur puis titre

SELECT auteur, titre FROM livres
ORDER BY auteur ASC, titre ASC;

5) Livres : plus gros livres d’abord (pages)

SELECT titre, pages FROM livres
ORDER BY pages DESC;

Bonus : tri + filtre

Films après 2010, triés par note décroissante.

SELECT titre, annee, note FROM films
WHERE annee > 2010
ORDER BY note DESC;
🧠

Auto-correction

Si votre tri ne change rien, c’est souvent parce que vos données sont déjà “presque triées”. Ajoutez une nouvelle ligne (chapitre 8) avec une valeur différente et retestez.

Récapitulatif du chapitre

Ce que vous savez faire

  • Trier un résultat avec ORDER BY
  • Utiliser ASC (croissant) et DESC (décroissant)
  • Faire un tri multi-colonnes (tri principal + secondaire)
  • Trier sur une expression / un alias (selon le SGBD)
  • Comprendre que NULL peut influencer l’ordre

Prochain chapitre : vous apprendrez à limiter le nombre de résultats avec LIMIT (très utile pour la pagination et les “Top 10”).