Par construction, l’ordre des lignes stockée à l’interieur d’une table est arbitraire.
On ne peut pas supposer que les lignes sont stockées dans un ordre déterminé.
Par principe, l’ordre des lignes du résultat d’une requête est donc aussi arbitraire.
Il est possible d’imposer un ordre de présentation en utilisant la clause ORDER BY
ORDER BY
Donner la liste ordonnée par ville des clients (numero, nom et ville) de catégorie A1
et C1
1SELECT ville, nom, categorie2FROM Clients3WHERE categorie IN ('A1', 'C1')4ORDER BY ville;
Clients de catégorie A1 et C1 | ||
---|---|---|
ville | nom | categorie |
Lyon | Lefevre | C1 |
Meylan | Lebreton | A1 |
Paris | Barda | C1 |
Paris | Jacques | C1 |
Multi-critères
On peut également indiquer plusieurs critères de tri :
1SELECT ville, categorie, nom2FROM Clients3ORDER BY ville, categorie;
Clients classés par ville et catégorie | ||
---|---|---|
ville | categorie | nom |
Grenoble | B2 | Vasseur |
Lille | B2 | Weiss |
Lyon | C1 | Lefevre |
Meylan | A1 | Lebreton |
Paris | Berlioz | |
Paris | C1 | Barda |
Paris | C1 | Jacques |
Paris | C3 | Da Costa |
Vizille | B1 | Rey |
Les clients vont apparaître classés par ville, puis dans chaque ville classés par catégorie.
Tri ascendant et descendant
Il est possible de modifier l’ordre utilisé pour le tri
- La clause
ASC
pour le tri ascendant - La clause
DESC
pour le tri descendant
1SELECT ville, categorie, nom2FROM Clients3ORDER BY ville DESC, categorie ASC;
Tri descendant | ||
---|---|---|
ville | categorie | nom |
Vizille | B1 | Rey |
Paris | Berlioz | |
Paris | C1 | Barda |
Paris | C1 | Jacques |
Paris | C3 | Da Costa |
Meylan | A1 | Lebreton |
Lyon | C1 | Lefevre |
Lille | B2 | Weiss |
Grenoble | B2 | Vasseur |
Par défaut, le tri est ascendant
Alias
Si une expression apparaît dans le SELECT
, elle sera spécifiée par son nom
S’il s’agit d’une colonne avec un alias
, elle sera spécifié par celui-ci
Donner les villes par valeurs décroissantes de leur population de clients
1SELECT ville, COUNT(*) AS 'Population'2FROM Clients3ORDER BY Population
Avec des alias | |
---|---|
ville | Population |
Meylan | 9 |
Critères non affichés
Il est possible d’utiliser des critères qui ne sont pas dans la clause SELECT
1SELECT numeroCommande, numeroProduit, quantite2FROM Details D, Produits P3WHERE D.numeroProduit = P.numero4ORDER BY numeroCommande, (quantite * P.prix) DESC;
Avec des alias | ||
---|---|---|
numeroCommande | numeroProduit | quantite |
1 | 3 | 1 |
1 | 1 | 3 |
1 | 2 | 1 |
2 | 5 | 1 |
2 | 4 | 1 |
3 | 3 | 2 |
3 | 1 | 4 |
3 | 5 | 1 |
3 | 2 | 1 |
3 | 4 | 1 |
4 | 1 | 7 |
4 | 2 | 1 |
5 | 3 | 1 |
5 | 2 | 1 |
5 | 1 | 2 |
6 | 1 | 10 |
7 | 1 | 1 |