Récupérer une liste d'éléments par leur identifiant en choisissant l'ordre de tri.

Lorsqu'on sélection une liste d'éléments par leur identifiant, on veut pouvoir les récupérer suivant un certain ordre. Cet ordre peut-être trivial à réaliser si on trie sur un autre champ, par exemple par date, ou par ordre croissant ou décroissant de cet identifiant. Mais si on veut récupérer les éléments dont les identifiants sont 15, 17 et 20 dans l'ordre 17, 20 et 15, ce n'est pas aussi simple.

On va supposer que la table dans laquelle on récupère les éléments à la structure suivante:

table essai
(
id int(7) not null auto_increment,
creation_date datetime not null default '0000-00-00 00:00:00',
nom varchar(255),
primary key(id)
);

La requête qui récupère les éléments 15, 17 et 20 est :

select id, creation_date, nom from essai where id in (15,17,20);

Si on veut trier par date de création en commençant par les éléments les plus anciennement créés :

select id, creation_date, nom from essai where id in (15,17,20) order by date_creation asc;

En fait la requête pour choisir l'ordre de tri par id dans l'ordre 17, 20 puis 15 n'est pas beaucoup plus compliquée:

select id, creation_date, nom from essai where id in (15,17,20) order by fiedl(id,17,20,15);

Haut de page