Informations

Auteur(s) Alison Leurquin
Date limite Pas de date limite
Limite de soumission Pas de limite

Se connecter

SQL19 - ORDER BY

Pour les questions suivantes, ceci sera la database utilisée: https://inginious.org/course/secondaire/SQL19/Small_chinook

Note: Si vous ne voulez pas utiliser le logiciel DB BROWSER pour visualiser la database, vous pouvez vous référer à la tâche SQL_DATABASE: Description de la base de données (https://inginious.org/course/secondaire/SQL_DATABASE) pour avoir une idée des tables. Les screens ne montre pas les tables complètes, celles-ci étant beaucoup plus grandes que montrée.


Nouveau mot clé: ORDER BY

Ce nouveau mot clé nous permet d'ordonner la table de sortie dans un ordre ascendant (ASC) ou descendant (DESC) par rapport a une colonnes spécifiée.

SELECT colonne1, colonne2, ...
FROM table_name
ORDER BY colonne1 ASC

Dans l'exempe ci-dessus, la table de sortie va être ordonnée par order ascendant par rapport a la colonne colonne1

Donc si dans la colonne colonne1 on a des chiffres alors la table sera ordonnée par ordre croissant. Et si dans la colonne colonne1 on a des mots, elle sera ordonnée par ordre alphabetique par rapport aux mots de la colonne1

SELECT column1, column2, ...
FROM table_name
ORDER BY column_1 DESC

Dans l'exempe ci-dessus, la table de sortie va être ordonnée par order descendant (ou decroissant) par rapport a la colonne colonne1

Par default, le mot clé ORDER BY ordonne de façon ascendante.

Il est aussi possible de spécifier plusieurs colonnes a ordonner:

SELECT pays, nom, ...
FROM table_name
ORDER BY pays ASC, nom ASC

Dans l'exemple ci-dessus, on va d'abord ordonner la table de façon ascendante (alphabetique) par rapport aux pays. Dans le cas ou nous avons plusieurs lignes ayant le même pays, nous allons les ordonner de façon ascendante par rapport aux noms.

EXEMPLE:

| pays      | nom      | prenom   | email                     |
| Belgique  | Smith    | John     | john.smith@mail.com       |
| Italie    | Doe      | John     | john.doe@mail.com         |
| Belgique  | Anderson | Leopold  | leopold.anderson@mail.com |
| France    | Hardy    | François | françois.hardy@mail.com   |
| Allemagne | Markels  | Johannes | Johannes.markels@mail.com |
| Italie    | Mancini  | Lucio    | lucio.vancini@mail.com    |
| Belgique  | Vander   | Lili     | lili.vander@mail.com      |

En appliquant la requête: SELECT pays, noms FROM table_name ORDER BY pays ASC sur la base de données ci-dessus, la table de sortie ressemblerait a ceci:

| pays      | nom      | prenom   | email                     |
| Allemagne | Markels  | Johannes | Johannes.markels@mail.com |
| Belgique  | Smith    | John     | john.smith@mail.com       |
| Belgique  | Vander   | Lili     | lili.vander@mail.com      |
| Belgique  | Anderson | Leopold  | leopold.anderson@mail.com |
| France    | Hardy    | François | françois.hardy@mail.com   |
| Italie    | Doe      | John     | john.doe@mail.com         |
| Italie    | Mancini  | Lucio    | lucio.vancini@mail.com    |

On peut voir que les lignes sont maintenant ordonnées de façon ascendante par rapport a la colonne "pays".

Maintenant, appliquons cette requête: SELECT pays, noms FROM table_name ORDER BY pays, nom ASC sur la table de base. Voici le resultat:

| pays      | nom      | prenom   | email                     |
| Allemagne | Markels  | Johannes | Johannes.markels@mail.com |
| Belgique  | Anderson | Leopold  | leopold.anderson@mail.com | *
| Belgique  | Smith    | John     | john.smith@mail.com       | *
| Belgique  | Vander   | Lili     | lili.vander@mail.com      | *
| France    | Hardy    | François | françois.hardy@mail.com   |
| Italie    | Doe      | John     | john.doe@mail.com         |
| Italie    | Mancini  | Lucio    | lucio.vancini@mail.com    |

Nous pouvons voir que maintenant, les trois lignes ayant "Belgique" comme pays, sont aussi ordonnées de façon ascendante par rapport a la colonne "nom".

-- Il est aussi possbile d'ordonner les colonnes dans deux sens differents:

SELECT pays, nom, ...
FROM table_name
ORDER BY pays ASC, nom DESC

Dans le cas ci-dessus, les pays vont être ordonnés de façon ascendant. Mais les noms vont etre ordonnés de façon descendant:

| pays      | nom      | prenom   | email                     |
| Allemagne | Markels  | Johannes | Johannes.markels@mail.com |
| Belgique  | Vander   | Lili     | lili.vander@mail.com      | *
| Belgique  | Smith    | John     | john.smith@mail.com       | *
| Belgique  | Anderson | Leopold  | leopold.anderson@mail.com | *
| France    | Hardy    | François | françois.hardy@mail.com   |
| Italie    | Mancini  | Lucio    | lucio.vancini@mail.com    | *
| Italie    | Doe      | John     | john.doe@mail.com         | *

Question 1:

Sélectionnez le prénom, le nom, et l'email des clients, en ordonnant les prénom par ordre ascendant.

Question 2:

Sélectionnez le prénom, le nom, et la ville des clients, en ordonnant le nom de la ville et ensuite le prénom par ordre ascendant.

Question 3:

Sélectionnez le prénom, le nom, et la ville des clients, en ordonnant le nom de la ville par ordre ascendant et ensuite le prénom par ordre descendant.