Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Ordre des lignes d'un résultat

Icône Présentation
1 / 1

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

SELECT ville, nom, categorie
FROM Clients
WHERE categorie IN ('A1', 'C1')
ORDER BY ville;
Résultat :
Clients de catégorie A1 et C1
villenomcategorie
Lyon Lefevre C1
Meylan Lebreton A1
Paris Barda C1
Paris Jacques C1

Multi-critères

On peut également indiquer plusieurs critères de tri :

SELECT ville, categorie, nom
FROM Clients
ORDER BY ville, categorie;
Résultat :
Clients classés par ville et catégorie
villecategorienom
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
SELECT ville, categorie, nom
FROM Clients
ORDER BY ville DESC, categorie ASC;
Résultat :
Tri descendant
villecategorienom
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

SELECT ville, COUNT(*) AS 'Population'
FROM Clients
ORDER BY Population
Résultat :
Avec des alias
villePopulation
Meylan 9

Critères non affichés

Il est possible d’utiliser des critères qui ne sont pas dans la clause SELECT

SELECT numeroCommande, numeroProduit, quantite
FROM Details D, Produits P
WHERE D.numeroProduit = P.numero
ORDER BY numeroCommande, (quantite * P.prix) DESC;
Résultat :
Avec des alias
numeroCommandenumeroProduitquantite
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