[RESOLU] Requete ORDER BY ordonnée comme je veux :)

Eléphant du PHP | 80 Messages

30 nov. 2017, 13:59

Bonjour,

Y-a t'il un moyen d'ordonner les réponses à une requete en fonction d'un autre ordre que croissant, décroissant, alphabétique ou numérique.

En effet, dans ma table, j'ai des postes de travail (Directeur, directeur adjoint, econome, animateur, etc ...) et je souhaiterais afficher les résultats en plaçant par ordre directeur, directeur adjoint, animateur, econome, etc ...

Y-a t'il un moyen de noter dans le ORDER BY, l'ordre que je privilégie ?

Au final, je ferai une jointure si une solution plus simple n'existe pas.

En vous remerciant. Stéphane

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 nov. 2017, 14:37

Bonjour,

Très bonne question que je m'étais jamais posée mais du coup j'ai cherché et j'ai appris des trucs ! :)

Avec MySQL tu peux directement indiquer l'ordre des champs que tu souhaites, comme ceci :
SELECT * FROM ma_table ORDER BY FIELD(poste_travail,'Directeur','Directeur adjoint','Économe','Animateur')


Ou sinon en pur SQL qui devrait marcher quelque soit le moteur de base de données :
SELECT * FROM ma_table
ORDER BY CASE poste_travail
    WHEN 'Directeur' THEN 1 
    WHEN 'Directeur adjoint' THEN 2 
    WHEN 'Animateur' THEN 3 
    END 
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 80 Messages

30 nov. 2017, 14:49

Super, je te remercie sincèrement, pour moi, et peut-etre pour ceux qui se sentent obligés de donner une valeur à leurs informations, afin d'ordonner avec une valeur numérique.
L'avantage de la jointure, c'est de pouvoir rajouter simplement une info à ordonner, sans modifier la requete à chaque fois, mais pour une utilisation ponctuelle, ta méthode me parait impecc..

Merci encore, Stéphane