Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/03/2011, 10h26   #1
Membre du Club
 
Inscription : mai 2002
Messages : 190
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 190
Points : 54
Points : 54
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 :
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 !
LadyArwen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h22   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui, mais la solution dépend de votre SGBD.
Faites une recherche sur les mots STRING AGGREGATION.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 14h17   #3
Membre du Club
 
Inscription : mai 2002
Messages : 190
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 190
Points : 54
Points : 54
Super ! merci du tuyau
Code :
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
LadyArwen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 14h20   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous avez oublié le group by dans votre requête :
Code :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h24   #5
Membre du Club
 
Inscription : mai 2002
Messages : 190
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 190
Points : 54
Points : 54
Oui je l'ai rajouté ensuite merci
LadyArwen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h45.


 
 
 
 
Partenaires

Hébergement Web