IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Order by sur le in


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Order by sur le in
    Bonjour à tous,
    Je cherche à faire un order by sur un in.
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    IDARTICLE
    ,NOM
    FROM 
    ARTICLE
    WHERE 
    IDARTICLE IN (56,10,130)
    Je voudrais qu'il m'affiche :

    56 POMME
    10 POIRE
    130 CERISE

    Merci d'avance de votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il suffit de faire un ORDER BY sur IDARTICLE, je ne vois pas où est le problème ici ?

    Tatayo.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Bonjour,

    Pour répondre à l'exemple donné, la colonne NOM est ici triée par ordre alphabétique inverse.
    Il faudrait alors écrire ORDER BY nom DESC pour obtenir ce résultat.

    Toutefois, je crains que cet ordre ne soit que l'effet du hasard et que la demande exacte soit "je cherche à ordonner les lignes suivant l'ordre dans lequel les identifiants sont spécifiés dans la liste IN ()"

    Cette liste ne présentant aucun ordre logique, l'ordre devra ici être imposé lors de l'écriture de la requête.
    On pourrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ORDER BY CASE idarticle 
                WHEN 56 THEN 1
                WHEN 10 THEN 2
                WHEN 130 THEN 3
            END
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Oui c'est bien cela Al1_24, je veux faire cela comme tu dis.
    "je cherche à ordonner les lignes suivant l'ordre dans lequel les identifiants sont spécifiés dans la liste IN ()"

    Je vais faire ma requête en dynamique pour construire le CASE si ya pas d'autre solution.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Une autre solution dans le même esprit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      select t1.IDARTICLE
           , t1.NOM
        from ARTICLE as t1
        join (values ( 56, 1)
                   , ( 10, 2)
                   , (130, 3)) as t2 (IdArticle, Tri) on t2.IdArticle = t1.IdArticle
    order by t2.Tri;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "Order by" sur des valeurs spécifiques
    Par damienTrax dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/11/2004, 09h20
  2. SELECT ORDER BY sur 2 tables
    Par _Eric_ dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/07/2004, 12h17
  3. Requête bizarre ... Order by sur 2 champs
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/06/2004, 14h38
  4. Faire un ORDER BY sur un champ
    Par Jeankiki dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/05/2004, 23h59
  5. order by sur plusieurs tables
    Par Mad_Max dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/12/2003, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo