Code SQL copié dans le presse-papiers
Cette leçon explique comment combiner les clauses `WHERE`, `ORDER BY` et `LIMIT` dans une requête SQL pour filtrer et trier précisément les données. Vous apprendrez l'ordre syntaxique correct et comment ces clauses fonctionnent ensemble pour affiner vos résultats, par exemple pour trouver les "5 premiers" enregistrements selon des critères. Maîtriser cette combinaison est essentiel pour créer des rapports ciblés et optimiser la récupération de données dans des applications réelles.
RU EN PT

Leçon 2.7 : Tout combiner — WHERE, ORDER BY et LIMIT

Jusqu'à présent, nous avons appris à filtrer les lignes (WHERE), à les trier (ORDER BY) et à limiter le nombre de résultats (LIMIT). Dans les scénarios réels, vous utiliserez presque toujours ces clauses ensemble pour obtenir exactement les données souhaitées.

L'ordre des clauses

SQL impose un ordre strict pour ces clauses dans une requête. Si vous les placez dans le mauvais ordre, la base de données retournera une erreur.

La séquence correcte est :

  1. SELECT (Quelles colonnes ?)
  2. FROM (Quelle table ?)
  3. WHERE (Filtrer les lignes en premier)
  4. ORDER BY (Trier les lignes filtrées)
  5. LIMIT (Prendre les X premiers résultats de la liste triée)
  6. OFFSET (Ignorer X lignes si besoin)

Logique : comment ça fonctionne

Quand vous exécutez une requête combinée, la base de données la traite conceptuellement ainsi :

  1. Elle examine la table FROM.
  2. Elle filtre les lignes qui ne correspondent pas à la condition WHERE.
  3. Elle trie les lignes restantes selon ORDER BY.
  4. Enfin, elle applique LIMIT pour ne retourner que la portion demandée.

Exemples

Exemple 1 : Trouver les 5 films d'action les plus courts

On filtre d'abord par catégorie, puis on trie par durée, et enfin on limite le résultat.

SELECT title, length, replacement_cost
FROM film
WHERE replacement_cost < 20.00
ORDER BY length ASC
LIMIT 5;

Exemple 2 : Les 10 locations récentes de grande valeur

Cette requête trouve les 10 locations les plus récentes ayant duré plus de 5 jours.

SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date - rental_date > 5
ORDER BY rental_date DESC
LIMIT 10;

Exemple 3 : Recherche d'acteurs spécifiques

Trouver les 3 premiers acteurs dont le nom de famille commence par 'B', triés par leur prénom.

SELECT first_name, last_name
FROM actor
WHERE last_name LIKE 'B%'
ORDER BY first_name
LIMIT 3;

Pagination avec WHERE et ORDER BY

Dans la leçon précédente, nous avons vu la pagination basique avec LIMIT et OFFSET. En pratique, on pagine sur une liste filtrée et triée.

Pourquoi utiliser WHERE et ORDER BY pour la pagination ?

  1. Filtrage : Les utilisateurs veulent souvent voir un sous-ensemble précis (ex. produits "actifs" ou films "comédie").
  2. Cohérence : Sans ORDER BY, la base peut retourner les lignes dans un ordre différent à chaque page, ce qui peut entraîner des doublons ou des oublis.

Formule de pagination

Pour la page "N" avec "S" résultats par page :

  • LIMIT S
  • OFFSET (N - 1) * S

Exemple combiné : Page 2 des acteurs "A"

Afficher la deuxième page (5 résultats par page) des acteurs dont le prénom commence par "A", triés par nom de famille :

SELECT first_name, last_name
FROM actor
WHERE first_name LIKE 'A%'
ORDER BY last_name
LIMIT 5 OFFSET 5; -- Page 2 : ignorer 5, prendre 5

Points clés de cette leçon :

  • Respectez l'ordre syntaxique strict : WHERE -> ORDER BY -> LIMIT.
  • Les conditions du WHERE sont appliquées avant le tri et la limitation.
  • Cette combinaison est la base de la plupart des rapports et listes "top-X" en interface utilisateur.
  • Utilisez toujours LIMIT avec ORDER BY pour des résultats cohérents.

Dans le module suivant, nous irons au-delà de la simple récupération de lignes et explorerons les fonctions d'agrégation pour calculer des totaux, moyennes et comptes sur des ensembles de données.