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 :

Regrouper l'affichage des données: GROUP BY, SELECT DISTINCT ou autre chose ? [MySQL-5.6]


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Regrouper l'affichage des données: GROUP BY, SELECT DISTINCT ou autre chose ?
    Bonjour

    Voici mon souci, j'ai 3 tables (voir ci-dessous). La table T_relation est alimentée via un formulaire avec les infos contenues dans les tables T_personne et T_Projet

    Je voudrai pouvoir afficher mes infos regroupées par titre de projet (explications ci-dessous)

    T_personne

    +-------------+--------+-----------+
    | id_personne | prenom | nom       |
    +-------------+------------+-------+
    | 3           | paul   | ochon     |
    | 4           | jean   | transcène |
    | 5           | alain  | térieur   |
    +-------------+--------+-----------+
    T_projet

    +-----------+----------+
    | id_projet | titre    |
    +-----------+----------+
    | 2         | projet1  |
    | 3         | projet2  |
    | 7         | projet3  |
    +-----------+----------+
    T_relation

    +-------------+-------------+-----------+
    | id_relation | id_personne | id_projet |
    +-------------+-------------+-----------+
    | 1           |   5         | 7         |
    | 2           |   3         | 7         |
    | 3           |   4         | 7         |
    | 4           |   5         | 3         |
    | 5           |   3         | 3         |
    | 6           |   4         | 3         |
    | 7           |   5         | 2         |
    +-------------+-------------+-----------+

    -------------------------------------------------------------------------------------------------------------------------------------------------------
    La table relation, est alimentée via un formulaire (l'utilisateur à la possibilité de choisir plusieurs personnes):

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <form name="formContact" action="insert-relation-media.php" method="post" enctype="multipart/form-data">
      <div class="form-group">
        <label for="selectProjet">Projet</label>
        <select name="selectProjet" id="selectProjet" class="form-control">
          <?php
            while ($lineProjet = mysql_fetch_array($resultProjet, MYSQL_ASSOC)) {
          ?>
          <option value="<?php echo $lineProjet['id_projet'];?>"><?php echo $lineProjet['titre'];?> </option>
     
          <?php
            }
          ?>
        </select>              
      </div>
     
      <div class="form-group">
        <label for="selectPersonne">Personne</label>
        <select name="selectPersonne[]" multiple="multiple" size="10" class="form-control" id="selectPersonne">
          <?php
            while ($linePersonne = mysql_fetch_array($resultPersonne, MYSQL_ASSOC)) {
          ?>
          <option value="<?php echo $linePersonne['id_personne'];?>"> <?php echo $linePersonne['nom'];?> <?php echo $linePersonne['prenom'];?> </option>
     
          <?php
            }
          ?>
        </select>              
      </div>
      <button type="submit" name="sub" class="btn btn-success">Envoyer</button>&nbsp;&nbsp;&nbsp;<input name="" type="reset" class="btn btn-danger">
    </form>
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    Requête d'insertion dans la table relation (comme l'utilisateur a la possibilité de sélectionner plusieurs personnes pour un projet, cette requête me permet d'insérer une ligne par personne):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Récup données form
    $projet			    = $_POST['selectProjet'];
    $personne		    = $_POST['selectPersonne'];
     
    // Insertion DB
    foreach($personne as $i => $personne_id){
    	$personneGroups = mysql_query("INSERT INTO T_relation SET `id_relation`='', `id_personne`='{$personne_id}', `id_projet`='{$projet}'"); 
     
    }
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    Jusqu'ici tout fonctionne parfaitement je n'ai aucun problème.

    A présent, je voudrai pouvoir affichier mes infos regroupées par titre de projet comme ceci:


    Nom du projet           : PROJET 3
    Personnes participantes : paul ochon | jean transcène | alain térieur  
    
    Nom du projet           : PROJET 2
    Personnes participantes : paul ochon | jean transcène | alain térieur
    
    Nom du projet           : PROJET 1
    Personnes participantes : paul ochon
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    J'ai essayé la requête suivante:

    "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT   	T_relation.id_relation, T_relation.id_personne, T_relation.id_projet,
    		T_projet.titre
    		T_personne.nom, T_personne.prenom
     
    FROM		T_relation, T_projet, T_personne
     
    WHERE		T_relation.id_personne = T_personne.id_personne AND T_relation.id_projet = T_projet.id_projet
     
    GROUP BY	T_projet.titre
     
    ORDER BY	planmedia.id_planmedia
    ";
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    Mais le résultat d'affichage n'est pas concluant, il ne m'affiche qu'une personne, même si plusieurs participent au projet:

    Nom du projet           : PROJET 3
    Personnes participantes : paul ochon  
    
    Nom du projet           : PROJET 2
    Personnes participantes : paul ochon
    
    Nom du projet           : PROJET 1
    Personnes participantes : paul ochon
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    Si j'enlève le GROUP BY il m'affiche ceci (ce qui est juste mais pas très élégant):

    Nom du projet           : PROJET 3
    Personnes participantes : paul ochon
    
    Nom du projet           : PROJET 3
    Personnes participantes : jean transcène
    
    Nom du projet           : PROJET 3
    Personnes participantes : alain térieur 
    
    Nom du projet           : PROJET 2
    Personnes participantes : paul ochon
    
    Nom du projet           : PROJET 2
    Personnes participantes : jean transcène
    
    Nom du projet           : PROJET 2
    Personnes participantes : alain térieur
    
    Nom du projet           : PROJET 1
    Personnes participantes : paul ochon
    -------------------------------------------------------------------------------------------------------------------------------------------------------

    Je sèche un peu et je ne vois pas comment arriver au résultat que je souhaite

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Hello xvi_69,

    A essayer pour Mysql : group_concat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT   	T_relation.id_projet,
    		group_concat(T_personne.nom)
     
    FROM		T_relation, T_projet, T_personne
     
    WHERE		T_relation.id_personne = T_personne.id_personne AND T_relation.id_projet = T_projet.id_projet
     
    GROUP BY	T_projet.titre
     
    ORDER BY	planmedia.id_planmedia
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Merci c'est exactement ce que je voulais
    Bonjour vttman,

    Merci pour la soluce c'est exactement ce que je voulais


    Citation Envoyé par vttman Voir le message
    Hello xvi_69,

    A essayer pour Mysql : group_concat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT   	T_relation.id_projet,
    		group_concat(T_personne.nom)
     
    FROM		T_relation, T_projet, T_personne
     
    WHERE		T_relation.id_personne = T_personne.id_personne AND T_relation.id_projet = T_projet.id_projet
     
    GROUP BY	T_projet.titre
     
    ORDER BY	planmedia.id_planmedia

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

Discussions similaires

  1. Requète select et affichage des données.
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/10/2009, 09h09
  2. Réponses: 3
    Dernier message: 24/11/2008, 14h09
  3. Réponses: 6
    Dernier message: 17/07/2006, 15h07
  4. TDBCtrlGrid - Affichage des données
    Par audreyb dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2004, 13h10
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

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