GROUP BY répété

Bonjour,
J'aimerais savoir s'il existe un moyen en mySQL (en ne passant pas par PHP) de ne pas répéter les colonnes groupées?

exemple :
SELECT titre, participant
FROM table GROUP_BY titre
nous donne quelque chose comme

titre1 | participant1
titre1 | participant2
titre1 | participant3
titre2 | participant1

Est-il possible d'avoir un résultat comme cela? :
titre1 | participant1
| participant2
| participant3
titre2 | participant1
Configuration: Windows XP
Firefox 3.0.10

3 réponses

  1. Contributeur
    Pas de quoi.
    Effectivement c'est dommage de ne pas pouvoir régler ça directement en MySQL mais c'est tout à fait logique comme je l'ai dit précédemment. MySQL ne te fournit que les données, or ce que tu demandes traite plutôt de la mise en forme. Tu devrais pouvoir trouver ton bonheur avec du PHP/MySQL/xHTML.

    En tout cas n'hésite pas à t'adresser à un forum spécialisé si t'as des problèmes au niveau programmation, tu auras sans doute de meilleures chances d'obtenir des réponses.

    Par exemple ici --> https://forum.phpfrance.com/

    Bon codage.

    0
    1. Merci pour ta réponse :)
      Oui je me suis plantée dans la requête c'est vrai :s
      Sinon je trouve vraiment dommage que l'on ne puisse pas faire une telle chose (malgré que ça parait logique quand tu l'expliques)
      Je vais me rabattre sur PHP et essayer de me coder une fonction qui me fasse ça
      Merci encore et bonne après midi
      0
      1. Contributeur
        Malheureusement la chose n'est pas possible en MySQL, pour une raison simple:
        une requête sql te renvoie un tableau de résultats qui comporte lui-même des lignes de résultat répondant à ta requête. Or pour obtenir des résultats sous la forme que tu demandes, il faudrait avoir des lignes (celle de participant3 par exemple) où il n'y aurait pas de titre, ce qui n'est pas possible.

        Soit dit en passant, ta requête
        SELECT titre, participant
        FROM table GROUP_BY titre

        ne te renverra d'ailleurs pas le résultat que tu exposes mais plutôt quelque chose comme ceci
        titre1 | participant1
        titre2 | participant1

        parce qu'un GROUP BY ne s'utilise que lorsqu'il y a un opérateur arithmétique dans ta requête comme ici :
        SELECT nom_magasin, SUM(chiffre_affaire)
        FROM liste_magasins
        GROUP BY nom_magasin

        Pour info, si tu veux obtenir
        titre1 | participant1
        titre1 | participant2
        titre1 | participant3
        titre2 | participant1

        un simple SELECT titre, participant FROM table suffit.

        Bon codage.
        0