OpenClassrooms becomes an accredited US university.
Discover what this means for youTable of contents
- Part 1
Initiez-vous à la modélisation relationnelle
Tirez un maximum de ce cours
Organisez vos données selon la modélisation relationnelle
Prenez en main une base de données
Identifiez les lignes de votre table avec votre clé primaire
Mettez en relation plusieurs tables avec des clés étrangères
Identifiez les types d'associations entre vos tables
Quiz: S'initier à la modélisation relationnelle
- Part 2
Construisez des requêtes SQL simples
Affichez les données pertinentes avec SELECT
Filtrez vos lignes avec WHERE
Récupérez des données issues de plusieurs tables avec FROM
Liez des tables avec une jointure interne
Maîtrisez les jointures externes et naturelles
Identifiez toujours vos potentielles clés primaires
Quiz: Construire des requêtes SQL simples
- Part 3
Appliquez d'autres fonctionnalités à vos requêtes SQL
Ordonnez vos données avec ORDER BY

Dans le chapitre précédent, nous avons vu comment faire un filtrage après une agrégation. L'opération que nous allons voir dans ce chapitre est très différente, mais ici elle va nous permettre d'arriver à peu près à la même conclusion.
En effet, au lieu d'utiliser HAVING comme précédemment, nous aurions aussi pu tout simplement trier les lignes selon la colonne nb_societes : de la plus grande valeur à la plus petite.
#Découvrez ORDER BY
Voici comment utiliser ORDER BY :
SELECT * FROM entity ORDER BY lifetime ;
Cette requête renvoie l'ensemble des lignes de la table entity , et classe les sociétés selon leur colonne lifetime .
Par défaut, le tri se fait dans l'ordre ascendant, c'est-à-dire du plus petit au plus grand. La requête précédente est donc équivalente à celle-ci :
SELECT * FROM entity ORDER BY incorporation_date ASC ;
Et pour trier dans l'ordre descendant ?
Il suffit de remplacer ASC par DESC :
SELECT * FROM entity ORDER BY incorporation_date DESC ;
#Trier sur plusieurs colonnes
Parfois, on peut vouloir trier selon plusieurs colonnes. C'est bien entendu possible ! Il suffit de les séparer par une virgule.
Utilisons le ORDER BY dans le cadre de notre enquête :
Au terme de cette vidéo, voici la requête que vous aurez écrite :
SELECT
i.id as intermediary_id,
i.name as intermediary_name,
e.jurisdiction,
e.jurisdiction_description,
count(*) as nb_societes
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id
AND a.inter = i.id
AND (i.id = 5000 OR i.id = 5001)
GROUP BY
i.id, i.name, e.jurisdiction, e.jurisdiction_description
ORDER BY
nb_societes DESC
LIMIT
5
Et voici le résultat de cette requête :

Bon, parmi ces 5 lignes, on n'a pas encore de paradis fiscaux... On va donc continuer nos recherches !
#À vous de jouer

#Contexte
Afin de réaliser une frise chronologique dans votre article, vous souhaitez avoir un aperçu du début de l'activité des 2 intermédiaires, afin de savoir quand faire débuter votre frise. Vous décidez donc d'afficher la date des premières sociétés créées.
#Consignes
Modifiez cette requête pour trier les lignes selon la colonne incorporation_date de la table entity dans l'ordre croissant :
SELECT
i.id as intermediary_id,
i.name as intermediary_name,
e.jurisdiction,
e.jurisdiction_description,
e.incorporation_date
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id
AND a.inter = i.id
AND (i.id = 5000 OR i.id = 5001)
#Vérifiez votre travail
Il suffit d'ajouter la colonne voulue après un ORDER BY :
SELECT
i.id as intermediary_id,
i.name as intermediary_name,
e.jurisdiction,
e.jurisdiction_description,
e.incorporation_date
FROM
intermediary i,
assoc_inter_entity a,
entity e
WHERE
a.entity = e.id
AND a.inter = i.id
AND (i.id = 5000 OR i.id = 5001)
ORDER BY
incorporation_date
#En résumé
On trie des lignes grâce à ORDER BY.
L'ordre de tri peut être défini grâce à ASC et DESC.
Pour trier selon plusieurs colonnes, il faut écrire ces colonnes après le ORDER BY, en les séparant par une virgule.
Il faut continuer nos recherches, je sens que nous sommes proches du but ! Dans le chapitre suivant, nous vérifierons si nous n'avons pas oublié des données en chemin…
- Up to 100% of your training program funded
- Flexible start date
- Career-focused projects
- Individual mentoring