Bonjour à tous
J'ai une question sans doute très basique, mais je débute et je n'ai pas trouvé la réponse dans le très bon cours de ce site.
Voici ma question : imaginons une table MYTAB à 2 colonnes, la première (NOMBRE) contient des nombres de 1 à 10, la seconde (TEXTE) contient du texte "Un", "Deux"... "Dix" dans l'ordre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 NOMBRE TEXTE --------------------- 1 Un 2 Deux 3 Trois 4 Quatre ... 10 Dix
Je veux une requête pour récupérer le contenu de la colonne TEXTE en fonction de valeurs contenues dans la colonne NOMBRE, sachant que NOMBRE contenir plusieurs valeurs dans un ordre donné (voir exemple). J'arrive à récupérer les bons éléments, mais pas dans le bon ordre, et j'ai l'impression que la commande ORDER BY ne peut pas répondre à mon problème.
Mon but est d'avoir le résultat en 1 seul requête car je fais cette requête depuis un logiciel de simulation qui dispose de capacités très limitées pour récupérer des données depuis une base de données, et chaque requête est relativement lente, je veux donc limiter au maximum leur nombre. La base de données est de type Oracle.
Exemple : Je veux récupérer "Deux" "Huit" "Cinq" dans cet ordre
Le résultat renvoyé est "Deux" "Cinq" "Huit", sans doute parce que ces entrées apparaissent dans cet ordre dans la base. ORDER BY ne semble pas pouvoir être utilisé dans ce cas car il se base sur un ordre établi sur une colonne de la table, or la je veux un classement en fonction de l'ordre dans IN (...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT TEXT FROM MYTAB WHERE NOMBRE IN (2,8,5)
Y'a-t il un moyen d'obtenir ça facilement ? avec des sous-requêtes peut-être?
Merci par avance et toutes mes excuses si la réponse est dans le cours et que je suis passé à côté..
Partager