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

Langage SQL Discussion :

SELECT : fusionner doublons sur le champs différent


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut SELECT : fusionner doublons sur le champs différent
    Bonjour,
    Pas évident de définir en un titre ce que je veux faire, et donc du mal à trouver des réponses.

    Je souhaite générer un planning Excel à partir d'une base de données.
    Pas de problème pour la requête, mais juste un détail qui me fait perdre du temps en traitement PHP, le cas des doubles animations.
    Une double animation c'est lorsque plusieurs profs assurent le même cours.
    Donc ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT A.titreAction, C.dateCours, MO.intModule, MA.intMatiere, C.dureeCours, C.debutCours, C.finCours, CONCAT (V.prenomVacataire, ' ' , V.nomVacataire) AS Vacataire
    FROM sg_cours AS C
    JOIN sg_matiere AS MA ON C.idMatiere= MA.idMatiere
    JOIN sg_module AS MO ON MA.idModule=MO.idModule
    JOIN sg_action AS A ON MO.idAction=A.idAction
    JOIN sg_vacataire_matiere AS VM ON C.idMatiere=VM.idMatiere
    JOIN sg_vacataire AS V ON VM.idVacataire=V.idVacataire
    ORDER BY C.dateCours, C.debutCours
    me renvoie 2 lignes si 2 profs ect...

    Jusqu'à présent je m'amusais à tester en PHP sur l'identifiant unique du cours (si c'est le même cours, ne pas aller à la ligne et rajouter le nom de l'autre prof derrière avec des virgules etc, si c'est le dernier prof, ne pas mettre de virgule, pffffffff..)

    Donc je retrousse finalement mes manches pour chercher une solution directement au niveau de la requête.

    Si je fais un GROUP BY idCours, je vais avoir qu'un seul nom de prof...
    Existe-t-il un moyen de retrouver tous les noms/prenoms des profs dans "Vacataire" et n'obtenir qu'un enregistrement par cours ?
    Si oui ce serait le bonheur car ce cas de figure je l'ai plein de fois !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Oui, mais la solution dépend de votre SGBD.
    Faites une recherche sur les mots STRING AGGREGATION.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Super ! merci du tuyau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT A.titreAction, C.dateCours, MO.intModule, MA.intMatiere, C.dureeCours, C.debutCours, C.finCours, GROUP_CONCAT(CONCAT(V.prenomVacataire, ' ' , V.nomVacataire) SEPARATOR " ") AS Vacataire
    FROM sg_cours AS C
    JOIN sg_matiere AS MA ON C.idMatiere= MA.idMatiere
    JOIN sg_module AS MO ON MA.idModule=MO.idModule
    JOIN sg_action AS A ON MO.idAction=A.idAction
    JOIN sg_vacataire_matiere AS VM ON C.idMatiere=VM.idMatiere
    JOIN sg_vacataire AS V ON VM.idVacataire=V.idVacataire
    WHERE A.idAction='99137'
    ORDER BY C.dateCours, C.debutCours

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez oublié le group by dans votre requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      SELECT A.titreAction, C.dateCours, MO.intModule, MA.intMatiere,
             C.dureeCours, C.debutCours, C.finCours,
             GROUP_CONCAT(CONCAT(V.prenomVacataire, ' ' , V.nomVacataire) SEPARATOR " ") AS Vacataire
        FROM sg_cours             AS C
        JOIN sg_matiere           AS MA ON  C.idMatiere   = MA.idMatiere
        JOIN sg_module            AS MO ON MA.idModule    = MO.idModule
        JOIN sg_action            AS A  ON MO.idAction    =  A.idAction
        JOIN sg_vacataire_matiere AS VM ON  C.idMatiere   = VM.idMatiere
        JOIN sg_vacataire         AS V  ON VM.idVacataire =  V.idVacataire
       WHERE A.idAction = '99137'
    GROUP BY A.titreAction, C.dateCours, MO.intModule, MA.intMatiere,
             C.dureeCours, C.debutCours, C.finCours
    ORDER BY C.dateCours ASC, C.debutCours ASC

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Oui je l'ai rajouté ensuite merci

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

Discussions similaires

  1. Select sans doublon sur un champ
    Par Carnot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/10/2007, 22h36
  2. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 08h02
  3. [Access] supprimer les doublons sur deux champs
    Par nini94 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/10/2006, 11h41
  4. Reperage de doublon sur plusieur champs
    Par sdblepas dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 18h19
  5. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 11h21

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