L'ordre logique d'exécution d'une requête
DébutantOn écrit SELECT en premier, mais il est évalué presque en dernier : c'est la source de la plupart des erreurs de débutant.
| Étape | Clause | Conséquence |
|---|---|---|
| 1 | FROM / JOIN | On construit l'ensemble de départ |
| 2 | WHERE | Filtre les lignes : ne voit pas les alias du SELECT |
| 3 | GROUP BY | Regroupe |
| 4 | HAVING | Filtre les groupes |
| 5 | SELECT | Calcule les colonnes et les alias |
| 6 | DISTINCT | Retire les doublons |
| 7 | ORDER BY | Peut utiliser les alias du SELECT |
| 8 | LIMIT / OFFSET | Coupe le résultat |
SELECT total * 1.2 AS ttc
FROM commandes
WHERE ttc > 100; -- ERREUR : l'alias « ttc » n'existe pas encore dans WHERE
SELECT total * 1.2 AS ttc
FROM commandes
WHERE total * 1.2 > 100 -- correct (ou passer par une sous-requête / CTE)
ORDER BY ttc; -- correct : ORDER BY voit les alias