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

 MySQL Discussion :

Regrouper les résultats d'un champ dans une requête


Sujet :

MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut Regrouper les résultats d'un champ dans une requête
    Bonjour,

    Suite à une requête simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select champ1, champ2, champ3, champ4 from matable;
    j'obtiens le résultat suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    champ1 champ2 champ3 champ4
    1       1       1         1
    1       1       2         2
    1       1       3         3
    mon objectif est d'obtenir le résultat suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    champ1 champ2 champ3 champ4
    1       1    1;2;3    1;2;3
    Peut-on faire ce type de traitement avec SQL ?

    Merci pour votre aide

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Bonjour,

    C'est possible sous MySQL avec la fonction GROUP_CONCAT().
    Mais ce n'est pas le rôle de la requête SQL de faire ce type de mise en forme, mais plutôt au langage appelant la requête (PHP par exemple).
    Pour l'utilisation de GROUP_CONCAT, voir la FAQ MySQL.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    merci Ced

    Malheureusement, j'ai des directives et je ne dois utiliser aucun langage à part le SQL.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    D'où le recours à GROUP_CONCAT pour vous en sortir.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    justement j'étais en train de regarder la syntaxe, mais apparemment ce n'est utile que lorsqu'on sait qu’on a un résultat unique. Alors qu'ici j'ai d'autres champs dans ma requête.

    merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Votre demande n'est pas assez précise, votre requête pourrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT GROUP_CONCAT(distinct champ1 ORDER BY champ1 ASC SEPARATOR ';'), 
           GROUP_CONCAT(distinct champ2 ORDER BY champ2 ASC SEPARATOR ';'), 
           GROUP_CONCAT(distinct champ3 ORDER BY champ3 ASC SEPARATOR ';'), 
           GROUP_CONCAT(distinct champ4 ORDER BY champ4 ASC SEPARATOR ';')
     FROM matable;
    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT champ1, 
           champ2, 
           GROUP_CONCAT(distinct champ3 ORDER BY champ3 ASC SEPARATOR ';'), 
           GROUP_CONCAT(distinct champ4 ORDER BY champ4 ASC SEPARATOR ';')
     FROM matable
     GROUP BY champ1,champ2;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Points : 167
    Points
    167
    Par défaut
    Merci beaucoup Fred,

    juste au moment où j'allais écrire que ça fonctionne, j'ai trouvé votre réponse.
    j'ai adopté une syntaxe semblable à votre deuxième requête.

    c'est résolu, merci encore

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

Discussions similaires

  1. Résultat d'un champ d'une requête dans une variable
    Par PsychedeChed dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 12h50
  2. [Lazarus] [Ubuntu] Regrouper les fenêtres de l'EDI dans une seule
    Par Sephiroth Lune dans le forum Lazarus
    Réponses: 0
    Dernier message: 11/07/2008, 14h36
  3. envoyer les données d'un champ dans une fenetre
    Par pyranha dans le forum WinDev
    Réponses: 2
    Dernier message: 07/05/2008, 08h33
  4. [MySQL] Afficher toutes les données d'un champ dans une liste déroulante
    Par Touareg dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 19/03/2007, 12h42
  5. Réponses: 7
    Dernier message: 18/01/2007, 15h03

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