Nous allons voir dans ce chapitre comment obtenir les données d’une manière triée. De même, nous verrons comment restreindre le résultat d’une requête à un nombre determiné d’enregistrements.

Database schema

Figure 9.1 : schéma de base de données

1. Tri simple

Supposons que nous aimerions obtenir les données à propos des employés comme nous l’avons déjà fait. Nous aimerions toutefois cette fois obtenir les données dans l’ordre alphabétique par nom de famille.

SELECT *
FROM Employee AS emp
ORDER BY emp.Last_name ASC

On obtient le tableau suivant.

{{h}}
{{r}}

2. Tri multiple

Supposons que nous aimerions obtenir les données à propos des projets de l’entreprise et les nom et prénom des employés participant à chacun de ceux-ci comme nous l’avons déjà fait. Nous aimerions toutefois cette fois obtenir les données dans l’ordre alphabétique par projet, et pour chaque projet, dans l’ordre alphabétique par nom de famille des employés.

SELECT proj.name AS Projet, emp.Last_name AS Nom, emp.First_name AS Prenom
FROM Employee AS emp, Involvement AS inv, Project AS proj
WHERE inv.Project_id = proj.ID AND inv.Employee_id = emp.ID
ORDER BY proj.Name, emp.Last_name ASC

On obtient le tableau suivant.

{{h}}
{{r}}

3. Limite

Supposons que nous aimerions obtenir les données des employés ayant respectivement le deuxième, troisième et quatrième salaire le plus elevés parmi les employés.

SELECT emp.Last_name AS Nom, emp.First_name AS Prenom, emp.Salary AS Salaire
FROM Employee AS emp
ORDER BY emp.Salary DESC
LIMIT 1,3

On obtient le tableau suivant.

{{h}}
{{r}}

Récap

Nous sommes maintenant capable d’obtenir les données d’une manière triée dans l’ordre croissant avec ASC ou décroissant avec DESC.

Nous avons vu également comment limiter le résultat d’une requête SQL avec LIMIT. Ce dernier délimite l’intervalle des enregistrements à extraire avec la syntaxe suivante LIMIT position, nombre d'enregistrements. Dans notre exemple, l’employé avec le salaire le plus élevé est indexé à la position 0, celui avec le deuxième salaire le plus élevé à la position 1, celui avec le troisième salaire le plus élevé à la position 2, etc. La position de départ est donc 1 et le nombre d’enregistrements est 3, donc LIMIT 1,3.

La clause LIMIT tel qu’exposé plus haut est la manière de faire avec MySQL et MariaDB uniquement. Les autres SGDBR‘s ont une manière de faire qui diffère légèrement.