J'ai une requête sql (utilisant Firebird comme RDBMS) dans laquelle j'ai besoin de classer les résultats par un champ, EDITION. J'ai besoin de commander par le contenu du domaine, cependant. c'est-à-dire que "NE" passe en premier, "OE" passe en deuxième position, "OP" passe en troisième position et les blancs en dernier. Malheureusement, je n'ai aucune idée de comment cela pourrait être accompli. Tout ce que j'ai fait est ORDER BY [FIELD] ASC/DESC et rien d'autre.Commande de requête SQL par des valeurs de champs spécifiques
Des suggestions? Edit: Je devrais vraiment clarifier: j'espérais juste en savoir plus ici. Je l'ai maintenant que j'ai juste plusieurs instructions select définissant ce qui doit être montré en premier. La requête est assez grand et j'espère vraiment apprendre peut-être une façon plus effecient de faire ceci: exemple:
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='NE'
UNION
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='OE'
UNION
SELECT * FROM RETAIL WHERE MTITLE LIKE 'somethi%' AND EDITION='OP'
UNION (etc...)
N l'une des solutions suggérées nécessite plusieurs sélections/unions. Ils devraient tous être beaucoup plus rapide et facile à maintenir, et la requête sera beaucoup plus facile à lire. –
Je vais avec Peter LaComb sur celui-ci. Pourquoi utilisez-vous UNIONs? Il n'y a pas besoin J'irais avec SELECT * FROM Retail WHERE MTITLE COMME «Quelque chose» et ÉDITION EN («NE», «OE», «OP», «») ORDRE PAR ÉDITION DE CAS Quand «NE» Puis 1 Quand 'OE' Puis 2 Quand 'OP' Puis 3 Else 4 Fin – Pulsehead
@Pulsehead vous pouvez trouver la réponse à pourquoi j'aurais utilisé des syndicats quelque part dans cette question très StackOverflow de ne pas savoir la meilleure façon de commander des champs. – Cyprus106