Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 10/04/2006, 14h17   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 9
Points : 2
Points : 2
Par défaut regrouper des informations dans une seule ligne

Bonjour

Je voudrais obtenir le résultat suivant:



Directeur |Statut | Spécialité | Paris | E mail
-----------------------------------------------------------------------------------------------
Michel A. | Directeur | Anthropologie, identité, métissage | non | michel@e.com
Elsa A. | professeur |Cinéma, Journalisme | oui |Alsa@e.com
Domi B. | Directeur | Littérature, théâtre, cinéma | non | domi@e.com


mais au lieu de ça J'obtiens:

Directeur |Statut | Spécialité | Paris | E mail
-----------------------------------------------------------------------------------------------
Michel A. | Directeur | Anthropologie | non | Michel@e.com
Michel A. | Directeur | identité | non | Michel@e.com
Michel A. | Directeur | métissage | non | Michel@e.com
Elsa A. | professeur |Cinéma | oui |Alsa@e.com
Elsa A. | professeur |Journalisme | oui | Alsa@e.com
Domi B. | Directeur | Littérature | non | domi@e.com
Domi B. | Directeur | théâtre | non | domi@e.com
Domi B. | Directeur | cinéma | non | domi@e.com


J'utilise SQL

Code :
1
2
3
4
5
6
 
SELECT *
FROM chercheur AS t1, appartenanceED AS t2, ecoleDoctorale AS t3,statutChercheur AS t4, chercheurSpecialite AS t5, specialite AS t6 
WHERE t1.idChercheur = t2.idChercheur AND t2.idEcoleDoctorale = t3.idEcoleDoctorale AND t1.idStatutChercheur = t4.idStatutChercheur AND t1.idChercheur = t5.idChercheur AND t5.idSpecialite = t6.idSpecialite AND t3.numeroEcoleDoctorale =122 AND t1.nature = 'enseignant chercheur' 
ORDER BY t1.nom 
LIMIT 0, 30 " ;
Pour éviter cela, il faudrait que j'utilise GROUP_CONCAT() dans mysql de cette façon:


Code :
1
2
3
4
5
6
7
8
 
SELECT *
GROUP_CONCAT(DISTINCT t6.nomChercheurSpecialite 
ORDER BY nomChercheurSpecialite ASC SEPARATOR ",") 
FROM chercheur AS t1, appartenanceED AS t2, ecoleDoctorale AS t3,statutChercheur AS t4, chercheurSpecialite AS t5, specialite AS t6 
WHERE t1.idChercheur = t2.idChercheur AND t2.idEcoleDoctorale = t3.idEcoleDoctorale AND t1.idStatutChercheur = t4.idStatutChercheur AND t1.idChercheur = t5.idChercheur AND t5.idSpecialite = t6.idSpecialite AND t3.numeroEcoleDoctorale =122 AND t1.nature = 'enseignant chercheur' 
GROUP BY t1.nom 
LIMIT 0, 30 " ;

MAIS LE SERVEUR QUI HEBERGE LE SITE EST EN MYSQL 4.0
ET LA FONCTION GROUP_CONCAT() n'existe qu'à partir de mysql 4.1


Ma question: comment obtenir le même résulatat avec du PHP, en tenant compte de
la version MYSQL 4.0 et PHP 4?

Merci

Citation:
Sujet déplacé depuis la section PHP par BiD0uille.
rozow est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2006, 11h08   #2
Membre Expert
 
Avatar de Adjanakis
 
Inscription : avril 2004
Messages : 734
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : avril 2004
Messages : 734
Points : 1 281
Points : 1 281
Bonjour,

En effet, il faut opter pour une solution en PHP. Si tu peux fournir la boucle qui permet de retirer les informations, on pourrait te proposer les modifications nécessaires.
Adjanakis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2006, 16h03   #3
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
+1

Accessoirement, un SGBD n'est pas fait pour faire de la cosmétique.
Donc même si tu étais en 4.1+, ça serait moyennement le rôle de MySQL d'effectuer un tel formatage du résultat...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h01.


 
 
 
 
Partenaires

Hébergement Web