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

Langage SQL Discussion :

Transformer un résultat de multiple record en multiple colonnes.


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Points : 61
    Points
    61
    Par défaut Transformer un résultat de multiple record en multiple colonnes.
    Bonjour,

    J'aimerais que le résultat de ma requête

    select value from table where id = 1 qui me retourne 3 records ne me retourne qu'un seul record mais en 3 columns value1, value2 et value3.

    Est ce possible ?

    Merci.

  2. #2
    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
    Faites une recherche sur le mot clef PIVOT.
    Il y a soit un syntaxe directe mais pas supportée par tous les SGBD, soit une combinaison des fonctions MAX et CASE.

  3. #3
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Je n'ai pas trouvé de manière élégante de faire ça en SQL pur (si quelqu'un a l'info, je suis intéressée). Vous pouvez toujours utiliser une clause GROUP BY pour parvenir à vos fins, mais ça fait plutôt bricolage...

    Cependant, les SGBD proposent chacun leur manière de faire:
    - Oracle propose PIVOT
    - SQL Server propose PIVOT
    - PostgreSQL propose des fonctions
    ...

    Bonne journée,

    Arkhena
    A bove ante, ab asino retro, a stulto undique caveto

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Points : 61
    Points
    61
    Par défaut
    Merci à vous deux pour vos réponses.
    Ca m'aide grandement.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Et aussi ce sujet qui est excellent (merci à son auteur) :
    http://fadace.developpez.com/mssql/pivot/

    Et une particularité MySQL : la fonction GROUP_CONCAT()

  6. #6
    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
    Citation Envoyé par escartefigue Voir le message
    Et une particularité MySQL : la fonction GROUP_CONCAT()
    GROUP_CONCAT c'est autre chose : la fonction ne renvoie qu'une seule colonne, c'est du string aggregation et pas un pivot qui lui retourne n colonnes.

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Oui, mais qui peut répondre au besoin dans certains cas, et c'est bien pratique, comme quoi mysql n'a pas que des inconvénients, meme s'ils sont nombreux

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/01/2016, 11h00
  2. DELETE multiple records with checkbox in asp
    Par joulive dans le forum ASP
    Réponses: 1
    Dernier message: 24/04/2010, 02h31
  3. [XSLT] Transformation XSLT résultat String
    Par creezeer dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 09/06/2006, 18h16
  4. Transformer les résultats d'une requête dans un autre ordre
    Par keikun dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/04/2006, 16h29
  5. update multiple dans une meme colonne
    Par debdev dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/01/2006, 21h46

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