J'ai une table pour deux types de nouvelles. Je veux créer une liste d'entre eux commandés par une date qui dépend du type de nouvelles, alors j'ai essayé ceci:Mélange le tri ascendant et descendant dans le tri conditionnel dans MySQL
SELECT * FROM my_table ORDER BY case type when 'news' then creation_date else 'events' then starting_date end desc;
Ce que je veux est de trier nouvelles par creation_date ASC
et événements par starting_date DESC
. J'ai essayé d'ajouter simplement
when 'news' then creation_date ASC else 'events' then starting_date DESC
mais cela ne fonctionne pas. Est-il possible de faire cela?
Merci.
Cela n'a pas de sens pour moi, pouvez-vous ajouter un exemple, comment voulez-vous que le résultat à trier? –
Les nouvelles sont toujours dans le passé et les événements dans le futur. Nous voulons afficher les nouvelles et les événements les plus proches. En utilisant le premier SELECT, j'ai obtenu les événements les plus éloignés, puis les nouvelles et les événements mélangés à la bonne date. Mais je dois d'abord afficher l'événement le plus proche d'aujourd'hui. Ensuite, les nouvelles doivent être triées par date de création DESC (ups, je l'ai dit dans l'autre sens), celles avec des dates plus importantes devraient apparaître en premier, alors que les événements sont inversés, les plus petites dates apparaissent en premier. Est-ce plus clair de cette façon? J'ai vraiment eu du mal à comprendre ce que mon patron veut. –