Trier les données par plusieurs colonnes
Parfois, nous devons trier les données avec plus d’une colonne pour obtenir des résultats plus organisés. Dans MySQL, la commande ORDER BY nous permet d’effectuer un double tri, ce qui nous permet de spécifier l’ordre de priorité des colonnes que nous voulons trier.
Le double tri est particulièrement utile lorsque les données comportent plusieurs paramètres qui doivent être triés pour obtenir des résultats plus clairs. Par exemple, lors du tri des données client, nous pouvons commencer par le nom de famille en premier, puis suivi du prénom pour éviter de mal classer les clients portant le même nom de famille. Un autre exemple est le tri des produits par prix et nom de produit, ce qui nous permet de voir les produits avec le même prix dans l’ordre alphabétique des noms de produits.
Pour trier les données par plusieurs colonnes, il suffit d’ajouter le nom de la colonne souhaitée dans la commande ORDER BY, séparée par des virgules. Voici un exemple de requête permettant de trier les produits par prix et par nom de produit :
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price, prod_name;
Dans cette requête, les données seront triées en fonction de la colonne prod_price (prix du produit) en priorité. S’il y a plusieurs produits avec le même prix, le tri se fera dans la deuxième colonne, qui est prod_name (nom du produit), qui sera triée par ordre alphabétique.
L’ordre de tri dans les clauses ORDER BY est crucial pour déterminer comment les données seront organisées. La première colonne mentionnée dans ORDER BY est la priorité absolue, donc toutes les données seront triées en fonction de cette colonne en premier. S’il y a la même valeur dans la première colonne, les deuxième, troisième, etc. seront utilisées comme critères supplémentaires pour trier davantage les données.
Par exemple, si nous avons des données spécifiques, ce type d’ordre nous aidera à comprendre comment les données sont organisées.
+---------+------------+----------------+
| prod_id | prod_price | prod_name |
+---------+------------+----------------+
| P001 | 10.00 | Apel |
| P002 | 10.00 | Jeruk |
| P003 | 15.00 | Mangga |
| P004 | 10.00 | Pisang |
À l’aide de la requête suivante :
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price, prod_name;
Les données seront organisées par prod_price (prix) en premier, suivi de prod_name (nom du produit). Le résultat est que les produits avec le même prix seront triés par ordre alphabétique par nom de produit.
Tri par position de colonne
MySQL nous permet de trier les données non seulement par nom de colonne, mais aussi en utilisant la position des colonnes dans SELECT instructions. Cela signifie que nous pouvons utiliser le numéro de séquence de la colonne pour faire ORDER BY sans mentionner directement le nom de la colonne.
Le tri par position de colonne signifie que nous utilisons le numéro de séquence de colonne dans l’instruction SELECT comme référence pour trier les données. Par exemple, la première colonne a la position 1, la deuxième colonne a la position 2, et ainsi de suite. Cette méthode raccourcit l’écriture des requêtes, en particulier lorsque les noms de colonnes sont trop longs ou compliqués.
L’utilisation du tri par position de colonne est utile lorsque le nom de la colonne est difficile à réécrire, accélérant ainsi le processus d’écriture des requêtes. De plus, cette méthode est efficace si nous sommes sûrs que l’ordre des colonnes dans l’instruction SELECT ne changera pas.
Cependant, certains inconvénients sont à noter. Si l’ordre des colonnes est modifié à l’avenir, le tri par position peut donner des résultats indésirables. De plus, l’utilisation de numéros de position peut rendre la requête moins claire, en particulier pour d’autres personnes qui lisent et ne connaissent pas l’ordre des colonnes utilisées.
Voici un exemple de requête qui trie les données en fonction de la position des colonnes :
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
Dans cette requête, le numéro 2 fait référence à la deuxième colonne, qui est prod_price, et le numéro 3 fait référence à la troisième colonne, qui est prod_name. De cette façon, les données seront d’abord triées par prod_price, et s’il y a des produits au même prix, elles seront triées par prod_name.