Je me demande s'il existe un moyen (peut-être meilleur) d'ordonner les valeurs dans une clause IN().
Le problème est que j'ai 2 requêtes, une qui obtient tous les ID et la seconde qui récupère toutes les informations. La première crée l'ordre des identifiants que je veux que la seconde ordonne. Les identifiants sont placés dans une clause IN() dans l'ordre correct.
Ce serait donc quelque chose comme (extrêmement simplifié) :
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Le problème est que la deuxième requête ne renvoie pas les résultats dans le même ordre que celui dans lequel les ID sont placés dans la clause IN().
Une solution que j'ai trouvée est de placer tous les ID dans une table temporaire avec un champ à incrémentation automatique qui est ensuite joint à la deuxième requête.
Y a-t-il une meilleure option ?
Note : Comme la première requête est exécutée "par l'utilisateur" et que la seconde est exécutée en arrière-plan, il n'y a aucun moyen de combiner les deux en une seule requête en utilisant des sous-requêtes.
J'utilise MySQL, mais je pense qu'il pourrait être utile d'indiquer les options disponibles pour les autres bases de données.