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

Requêtes PostgreSQL Discussion :

Trier en fonction d'un attribut ayant une valeur définie [9.3]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Trier en fonction d'un attribut ayant une valeur définie
    Bonjour, j'ai fait une requête, j'ai un attibut "id_contrat", j'aimerais que les enregistrements dont le id_contrat vaut 11 sortent en premier, j'ai alors tenté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY (o.id_contrat=?) IS TRUE DESC
    Mais j'ai une SQL exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.postgresql.util.PSQLException: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
    Sachant que je met SELECT ..., o.id_contrat, ...

    J'ai pas trouvé grand chose sur le net sur ce cas de figure, si vous avez une méthode qui marche je suis preneur. ;-))

    Merci.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je ne comprends pas votre tentative, 11 est un paramètre ?
    Sinon, il faut utiliser CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when o.id_contrat = 11 then -1 else o.id_contrat end
    En tablant sur le fait que les id_contrat sont positifs.

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Je ne comprends pas votre tentative, 11 est un paramètre ?
    Sinon, il faut utiliser CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when o.id_contrat = 11 then -1 else o.id_contrat end
    En tablant sur le fait que les id_contrat sont positifs.
    en gros je veux que les enregistrement dont o.id_contrat=11 sortent en premier, sans faire de tri sur les autres valeurs.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ben dans ce cas simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when o.id_contrat = 11 then 1 else 2 end

  5. #5
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Ben dans ce cas simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY case when o.id_contrat = 11 then 1 else 2 end
    merci ça marche parfaitement !

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

Discussions similaires

  1. [XSLT 2.0] Noeuds successifs ayant un fils avec un attribut d'une valeur donnée
    Par Nemix dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/07/2011, 16h14
  2. [DOM] Accès à un noeud particulier ayant une valeur d'attribut particulière
    Par Mil17 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 02/07/2008, 11h37
  3. Selectionner une balise avec un attribut ayant deux valeur
    Par lemok dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2007, 17h25
  4. [PEAR][HTML_QuickForm] Attribution d'une valeur par défaut à un select
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/02/2006, 08h08
  5. Réponses: 4
    Dernier message: 12/10/2005, 13h13

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