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 :

Concater et grouper les résultats d'une requète


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut Concater et grouper les résultats d'une requète
    Bonjour,

    J'ai une requête MYSQL me permettant d'obtenir plusieurs résultats sous la forme de chaînes concaténées ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONCAT_WS('|',taux_TVA,CAST( SUM(TVA) AS CHAR ) ) FROM tresorerie GROUP BY taux_TVA
    Permet d'avoir d'obtenir toutes les sommes des TVA par taux de TVA sous forme d'une chaine de caractères "tauxTVA|sommeTVA"

    Comme il existe différentes TVA, cette première requête génère plusieurs lignes de résultats (3).

    Je souhaite concaténer à nouveau ces lignes en insérant par exemple la chaîne de caractère "@@"

    Pour cela il y a la fonction GROUP_CONCAT() mais qui ne semble plus fonctionner lorsqu'il y a des fonctions mathématiques à l'intérieur (ici SUM()).

    Donc la requête supposée fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT GROUP_CONCAT(CONCAT_WS('|',taux_TVA,CAST( SUM(TVA) AS CHAR ) ) SEPARATOR '@@') FROM tresorerie GROUP BY taux_TVA
    ne marche pas.

    #1111 - Invalid use of group function
    Auriez vous une solution alternative ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2014
    Messages : 253
    Points : 164
    Points
    164
    Par défaut
    Solution trouvée pas intuitive, mais très efficace et à retenir (je conseille) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT GROUP_CONCAT(ligne SEPARATOR '@@') FROM (SELECT CONCAT_WS('|',taux_TVA,CAST( SUM(TVA) AS CHAR ) ) ligne FROM tresorerie t GROUP BY taux_TVA) t
    explication ultra rapide : créer des variables temporaires permettant de garder en mémoire et cibler la zone de recherche des données et éviter que mysql se perde entre les tables et les résultats de requêtes.

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

Discussions similaires

  1. [MySQL-5.5] Grouper les résultats d'une requête
    Par frkta dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/04/2014, 13h44
  2. Trier/Grouper les résultats d'une requête.
    Par cristal8811 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/01/2011, 23h43
  3. 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
  4. Limiter les résultats d'une requête à \today\' - n jours
    Par Eddy Duflos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/10/2005, 08h46
  5. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 18h18

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