Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 05/02/2011, 10h04   #1
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 707
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 707
Points : 328
Points : 328
Par défaut Invalid use of group function

Bonjour,
J'ai ceci qui roule très bien :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT d.noms AS noms, s.genre AS sexe, 
COUNT(dl.id_legis) AS total_legis, GROUP_CONCAT(CAST(dl.id_legis AS CHAR) ORDER BY dl.id_legis SEPARATOR ", " ) AS liste_legis, 
COUNT(DISTINCT pp.id_parti) AS total_parti, GROUP_CONCAT(DISTINCT pp.sigle ORDER BY pp.id_parti SEPARATOR ", " ) AS liste_parti,
COUNT(DISTINCT dl.id_dpt) AS total_dpt, GROUP_CONCAT(DISTINCT d2.libelledpt ORDER BY d2.libelledpt SEPARATOR ", " ) AS liste_dpt,
r.libelleregion AS region
FROM deputes AS d
LEFT JOIN sexes AS s ON d.sexe = s.id_sexe
LEFT JOIN depute_legislatures AS dl ON dl.id_depute = d.id_depute
LEFT JOIN partis_politiques AS pp ON dl.id_parti = pp.id_parti
LEFT JOIN departements AS d2 ON d2.iddpt = dl.id_dpt
LEFT JOIN regions AS r ON r.idregion = d2.idregion
WHERE d.sexe = 1
GROUP BY dl.id_depute 
HAVING total_legis > 1
ORDER BY total_legis DESC, d.noms
Ci haut est la requête complète mais c'est à cette parti qu'est le problème
Citation:
GROUP_CONCAT(DISTINCT pp.sigle ORDER BY pp.id_parti SEPARATOR ", " ) AS liste_parti
Quand j'ajoute COUNT(dl.id_legis) dans le GROUP_CONCAT de cette façon:
Code :
1
2
 
GROUP_CONCAT(COUNT(dl.id_legis), CAST(dl.id_legis AS CHAR) ORDER BY dl.id_legis SEPARATOR ", " ) AS liste_legis
J'ai cette erreur :
Citation:
Invalid use of group function
Qu'est-ce qui ne tient pas?

Merci d'avance...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2011, 23h36   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 544
Points : 9 544
Tu n'as pas le droit d'imbriquer des fonctions d'agrégation... autrement dit, mettre un COUNT dans un GROUP_CONCAT est interdit (et aberrant).

Est-ce que tu ne veux pas tout simplement faire ça ?
Code :
1
2
3
4
5
 
CONCAT(COUNT(dl.id_legis), 
  ', ', 
  GROUP_CONCAT(CAST(dl.id_legis AS CHAR) ORDER BY dl.id_legis SEPARATOR ', ' )
) AS liste_legis
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun 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 08h33.


 
 
 
 
Partenaires

Hébergement Web