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 MySQL Discussion :

GROUP CONCAT: condition


Sujet :

Requêtes MySQL

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut GROUP CONCAT: condition
    Bonjour à tous et à toutes,

    Je travaille sur workbench 5.2.

    J'aimerai savoir s'il est possible de mettre une condition dans un GROUP_CONCAT car je ne trouve pas ceci sur la documentation mysql.
    Sinon comment faire?

    Imaginons un exemple:
    Je possede une table client, une table commande et une table quantite

    J'aimerai faire un groupe concat qui ressemblerai à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT C.name
    GROUP_CONCAT(CMD.libelle, " (", QTT.value, ")" SEPARATOR "\n" CONDITION QTT.value > 10)
    GROUP_CONCAT(CMD.libelle, " (", QTT.value, ")" SEPARATOR "\n" CONDITION QTT.value < 10)
    Bien entendu le mot clé CONDITION n'existe pas dans un GROUP CONCAT.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    directement dans le GROUP_CONCAT, je ne pense pas. Peut être trouver une combine dans un HAVING ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT GROUP_CONCAT(champ) as gc
    FROM table
    GROUP BY champ2
    HAVING gc ???

    Désolé de ne pas pouvoir t'aider plus...Peut être faire une sorte d'explode sur le séparateur mais c'est lourd...

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Bonjour,

    directement dans le GROUP_CONCAT, je ne pense pas. Peut être trouver une combine dans un HAVING ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT GROUP_CONCAT(champ) as gc
    FROM table
    GROUP BY champ2
    HAVING gc ???

    Désolé de ne pas pouvoir t'aider plus...Peut être faire une sorte d'explode sur le séparateur mais c'est lourd...
    Merci d'avoir répondu.
    Cependant, je ne pense pas que dans le HAVING ceci fonctionnerai car le group_concat s'execute avant il me semble.
    La seul solution que je peux voir serai de faire des sous requetes mais je ne sais pas si ceci va fonctionner.
    Donc si il y a une autre solution...

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Une sous requête comme l'a montré CinéPhil dans l'autre message devrait pouvoir te sortir d'affaire

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Une sous requête comme l'a montré CinéPhil dans l'autre message devrait pouvoir te sortir d'affaire
    D'accord, Je vais donc essayer ceci
    Merci

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Quelque chose comme ca en somme

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT name, GROUP_CONCAT(CMD.libelle) FROM 
        (SELECT * FROM table
          WHERE unChamp > 10
         ) as group1
    GROUP BY un autreChamp;
     
    UNION
     
    SELECT name, GROUP_CONCAT(CMD.libelle) FROM 
        (SELECT * FROM table
          WHERE unChamp <= 10
         ) as group2
    GROUP BY un autreChamp;

    (pas testé)

    Fait gaffe à ne pas exclure 10 de tes 2 GROUP_CONCAT aussi

  7. #7
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Quelque chose comme ca en somme

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT name, GROUP_CONCAT(CMD.libelle) FROM 
        (SELECT * FROM table
          WHERE unChamp > 10
         ) as group1
    GROUP BY un autreChamp;
     
    UNION
     
    SELECT name, GROUP_CONCAT(CMD.libelle) FROM 
        (SELECT * FROM table
          WHERE unChamp <= 10
         ) as group2
    GROUP BY un autreChamp;

    (pas testé)

    Fait gaffe à ne pas exclure 10 de tes 2 GROUP_CONCAT aussi
    Merci pour cette réponse.
    C'est comme cela que j'ai prossédé et je m'en suis sortie.
    Pour plus de précisions:
    http://www.developpez.net/forums/d87...rs-conditions/

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

Discussions similaires

  1. Requête avec des groupes de conditions distincts
    Par abdelhamidem dans le forum SQL
    Réponses: 2
    Dernier message: 08/03/2011, 18h00
  2. question sur GROUP CONCAT
    Par Dranak dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/07/2008, 16h04
  3. Remplacer un group concat
    Par pmithrandir dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/02/2008, 11h50
  4. inserer un groupe sous condition
    Par mikedavem dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 17/01/2008, 09h03
  5. requète GROUP BY CONCAT
    Par the_nul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/11/2006, 23h38

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