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

SQL Procédural MySQL Discussion :

GROUP_CONCAT pour antérieur à 4.1


Sujet :

SQL Procédural MySQL

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut GROUP_CONCAT pour antérieur à 4.1
    Je pensais avoir pris le précaution d'avoir les mêmes version en local et en distant ...
    Il s'avère maintenant que non

    J'ai un gros souci avec GROUP_CONCAT implémenté à partie v4.1 et mon hebergeur est en 4.02
    Cette syntaxe me donnait entière saf=tisfaction en local
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GROUP_CONCAT(z.dept_zone ORDER BY z.dept_zone SEPARATOR  ',') as ListeDep
    je ne sais pas comment le faire en v < 4.1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    tu as des accès root sur ton serveur?

    parce que le plugin GROUP_CONCAT existe pour les version antérieur

    sinon, je reflechit comment simuler un group_concat, mais c'est pas simple

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Merci de ta réponse !

    aarggggg
    non je n'ai pas accès au root du serveur ...

    Je demande à mon hebergeur d'installer le pluggin, par contre je ne l'ai pas trouvé sur le net ? tu aurasi un lien ?


    j'ai trouvé ça mais pas tout pigé ...
    http://case.oncle-tom.net/2007/04/09...teau/#more-550
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    je l'avais gardé sous la main en fonction de ce que tu répondrais

    http://www.pecus.it/stuff/udf_groupconcat.cc
    Instruction pour installer udf_groupconcat.cc


    user@host:˜> gcc -Wall -I /path/to/mysql/include -I /usr/local/include -c udf_groupconcat.cc -o udf_groupconcat.o
    user@host:˜> ld -shared -o udf_groupconcat.so udf_groupconcat.o
    user@host:˜> cp udf_groupconcat.so /usr/lib
    user@host:˜> mysql (avec les options -u -p , user et mot de passe quoi )
    mysql> CREATE AGGREGATE FUNCTION group_concat RETURNS STRING SONAME 'udf_groupconcat.so';
    si j'étais dans ton cas, je simplifierais la requête SQL, puis coté php je regrouperais tout çà , la fonction implode en php fonctionne de la même manière que group_concat

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    oui mais dans mon cas de requete je ne penses pas que ce soit faisable ...
    c'est pour peupler un tableau html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $sqlString="SELECT c.id_comm as Idcomm,
    			c.nom_comm as Nom,
    			c.titre_comm as  Titre, 
    			c.fonc_comm as Fonction, 
    			c.ag_comm as Agence, 
    			c.adr_comm as Adresse, 
    			c.tc_comm as Sedentaire, 
    			c.fixe_comm as Tel, 
    			c.mob_comm as Mob, 
    			c.fax_comm as Fax, 
    			c.mail_comm as Email, 
    			c.pass_comm as Password, 
    			GROUP_CONCAT (z.dept_zone SEPARATOR ',') as Depts
    			FROM contacts c LEFT OUTER JOIN zonage z 
    			ON c.id_comm = z.idcomm_zone"
    			.(($_SESSION['user_id']!='SK. MARTIN')?" WHERE c.fonc_comm!='MAS'":" ")." GROUP BY c.id_comm";
    faudrait une requete imbriquée ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    c'est la requête avec le group_concat qui m'interesse :p

    ainsi que le code php qui l'exploite

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    arf le boulet

    pour la requete : modifié au dessus ...


    pour le code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while($row = mysql_fetch_assoc($sqlResult)) { ?>
    <tr onmouseover="this.style.backgroundColor='salmon';" onmouseout="this.style.backgroundColor='transparent';">
    	<?php 	echo '<td id="ID_'.$row['Idcomm'].'"><form action="FicheUser.php" method="post"><input name="UserId" value="'.$row['Idcomm'].'" type="hidden" /><input name="ButtonUserId"  type="image" src="AdminPics/Modif.gif" style="cursor:pointer;" /></form></td>';
    			echo '<td id="ID_'.$row['Idcomm'].'">'.$row['Nom'].'</td>';
    			echo '<td >'.$row['Fonction'].'</td>';
    			echo '<td>'.$row['Titre'].'</td>';
    			echo '<td>'.$row['Agence'].'</td>';
    			echo '<td>'.$row['Adresse'].'</td>';			
    			echo '<td>'.$row['Sedentaire'].'</td>';	
    			echo '<td>'.$row['Depts'].'</td>';
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Bonjour,
    est-ce que la solution ne proviendrait pas qu'il faut rajouter un CAST ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GROUP_CONCAT(CAST(z.dept_zone AS CHAR) ORDER BY z.dept_zone SEPARATOR  ',') AS ListeDep

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Non c'est que mysql 4.0 ne supporte pas GROUP_CONCAT ...
    cela fonctionne parfaitement sur des versions plus récentes ...


    Je peux toujours faire une requete dans la boucle while, mais on m'a toujours déconseiller de faire ce genre de chose !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    si je me souvien bien, si tu ne met pas le groupe concat, tu va remplacer 1 lignes avec un champ qui sert de tableau par 10 lignes avec une valeur différente par ligne dans la colonne qui n'est pas dans le groupe concat...

    Donc toutes les autres valeurs ne changent pas.

    Tu dois donc pouvoir au début du while tester l'id(par exemple)
    - si il est le même que celui d'avant , ne rien faire d'autre qu'ajouter la valeur de ta colonne.(en oubliant pas de trier autrement tu pourrais avoir des doublons.)

    - si il est différent, ajouter une ligne complète.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ha oui ça évite la requete dans la boucle en effet ... donc en ayant fait un tri sur l'id je peux me reconstituer un array à partir de la requête en testant l'id, puis construire la page à partir de l'array ....
    mais du coup tous mes SORT BY

    Je vais voir ce que je peux faire avec ça ...

    Si quelqu'un a une autre suggestion pour teste l'id directement avec mysql au lieu de faire des pansements en php ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    bon mon hébergeur n'étant pas loin de la audacieux en ce qui concerne l'update ou le patch ...
    me voilà sans doute condamné à faire un outerjoin ...
    le regourpement se fera en php avec un test sur l'id du commercial pour concaténer les departements ...

    du coup pour mes SORT BY il faut que je fasse le SORT BY le champs id_comm puis par le champs voulu ...

    pourquoi faire simple quand on vous oblige à faire compliqué
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Bon n'ayons pas peur du ridicule...
    j'ai solutionné le problème avec php
    http://www.developpez.net/forums/sho...d.php?t=523600

    on m'a cependant parlé de la possibilité de CREATE FUNCTION, conservant le traitement au niveau mysql ...

    mais je ne vois pas trop comment faire ...

    des idées ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    Ben comme CREATE FUNCTION te permet d'ajouter tes propres fonctions utilisateurs à ton serveur, si tu connais le fonctionnement EXACT de GROUP_CONCAT (voir la doc) tu peux toujours créer ta propre implémentation à la main ... mais bon faut être sûr de pas se planter et puis ça sera plus lent à l'execution que si tu pouvais compiler la source et l'ajouter en tant qu'extension.

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ok merci pour cette info... mais en l'occurence je n'ai pas la main sur le root ...
    Alors create function ou gestion en php ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. group_concat pour postgresql
    Par viny dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/09/2016, 10h20
  2. Réponses: 10
    Dernier message: 26/11/2010, 08h50
  3. Désinstaller IE6 pour installer version antérieure
    Par zebulon94 dans le forum Windows XP
    Réponses: 4
    Dernier message: 04/08/2009, 11h03
  4. Backup pour une version antérieure
    Par Tikate dans le forum Administration
    Réponses: 4
    Dernier message: 11/06/2007, 15h41

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