Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum 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 08/12/2010, 19h16   #1
Membre du Club
 
Homme Aurelien NF
Inscription : août 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Aurelien NF
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : août 2010
Messages : 216
Points : 59
Points : 59
Envoyer un message via Skype™ à AurelienNF
Par défaut Effectuer plusieurs COUNT dans une requete mysql

Bonjour à tous,

Je cherche à mettre en place un calcul du nombre de réponse par catégorie via une seule requête mysql.

Dans ma page agenda j'affiche plusieurs événements correspondant à trois catégories.
Je souhaite compter le nombre de réponse pour les 3 catégories via une seule requête mysql.

J'ai fait le tour des plusieurs réponses sur le forum mais je n'ai pas trouvé de quoi avancer sur mon problème.

Voici le bout de requête que j'ai gratté :
Code :
1
2
3
4
5
6
7
8
9
10
11
$sqlQuery2 =
		" SELECT COUNT (SOIREE_TYPE= '1') AS CONCERT_TYPE, COUNT (SOIREE_TYPE= '2') AS SPECTACLE_TYPE, COUNT (SOIREE_TYPE= '3') AS SOIREE_TYPE ".
			" FROM SOIREE ".
 " ORDER BY SOIREE_DATE ASC ";
 
				$req2 = mysql_query($sqlQuery2);
				checkSqlError($sqlQuery2);
				$countValue = mysql_fetch_array($req2);
				return $countValue['CONCERT_TYPE'];
				return $countValue['SPECTACLE_TYPE'];
				return $countValue['SOIREE_TYPE'];
J'ai un message d'erreur qui s'affiche : à causé une erreur sur le serveur mySql:
Citation:
FUNCTION nightfever1.COUNT does not exist
A priori je m'y prends mal, quelle est la bonne méthode ?

Merci beaucoup par avance,

Aurélien
AurelienNF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 21h40   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

Code sql :
1
2
3
4
5
 
SELECT COUNT(*) AS nombre_reponses FROM SOIREE
GROUP BY SOIREE_TYPE
WHERE SOIREE_TYPE IN(1, 2, 3)
ORDER BY SOIREE_DATE
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 22h44   #3
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Je remets juste les instructions dans le bonne ordre
Code sql :
1
2
3
4
5
SELECT SOIREE_TYPE, COUNT(*) AS nombre_reponses 
FROM SOIREE
WHERE SOIREE_TYPE IN (1, 2, 3)
GROUP BY SOIREE_TYPE
ORDER BY SOIREE_TYPE
Mais cette requête fourni les count en ligne.
Les avoir en colonne relève de la cosmétique et n'est pas le travail du SGBD mais celui du code applicatif (ici le php).

Il est possible d'effectuer des opérations de cosmétique côté SGBD mais
1/ la requête est moins performante
2/ c'est statique (ici 3 colonnes max et soiree_type est hardcodé)

Tu sembles avoir la main sur le code php donc autant pivoter les résultat en php.
Si tu as vraiment besoin de ce formatage en colonne nous te le fournirons mais il n'est pas souhaitable d'utiliser le php pour générer une requête cosmétique, autant l'utiliser pour directement faire le cosmétique!

Allez un indice si tu es intéressé, utilise les mots clé PIVOT, MAX, CASE pour te renseigner.

PS : tu parles d'agenda et tu utilises
Code sql :
ORDER BY SOIREE_DATE
donc peut être que la requête fourni ne correspond pas à ton besoin. Si c'est le cas merci d'être plus explicite.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 22h56   #4
Membre du Club
 
Homme Aurelien NF
Inscription : août 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Aurelien NF
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : août 2010
Messages : 216
Points : 59
Points : 59
Envoyer un message via Skype™ à AurelienNF
Merci beaucoup pour vos réponses.

Désolé mais certains termes sont du chinois pour moi
Une fois la requête mise en place, comment afficher le nombre de mes résultats par catégorie en php ?

Merci par avance,

Aurélien
AurelienNF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 00h33   #5
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
@skuatamad : merci pour cette correction

@AurelienNF : tu vas récupérer un resultSet du type :

Code :
1
2
3
4
 
1 500
2 250
3 400
où 1, 2, 3 sont les catégories et 500, 250, 400 sont le nombre de résultats par catégories.

Ainsi, si tu codes avec pdo, tu peux faire quelque chose comme ca :

Code php :
1
2
3
4
5
6
7
8
9
10
 
$statement = $this->_connexion->prepare('SELECT soiree_type, COUNT(*) AS nombre_reponses 
                                                          FROM SOIREE
                                                          WHERE SOIREE_TYPE IN (1, 2, 3)
                                                          GROUP BY SOIREE_TYPE
                                                          ORDER BY SOIREE_TYPE');
$statement->execute();
 
while($ligne = $statement->fetchObject())
    echo 'catégorie ' . $ligne->soiree_type . ' : ' . $ligne->nombre_reponses . '<br />';

Reste plus bien sur qu'à formater les données à ton gré

EDIT: le $this->_connexion représente ta connexion à ta base si bien sur tu codes en POO
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 09h23   #6
Membre du Club
 
Homme Aurelien NF
Inscription : août 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Aurelien NF
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : août 2010
Messages : 216
Points : 59
Points : 59
Envoyer un message via Skype™ à AurelienNF
Merci pour vos réponses.

Je ne connaissais même pas l'existance de pdo
Est-ce vraiment plus utile que mes requetes classiques ? Moins contraignant ?

Actuellement n'utilisant pas pdo, comment puis-je integrer cette requete mysql à mon code php ?

Merci par avance,

Aurélien
AurelienNF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 09h36   #7
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 528
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 528
Points : 3 519
Points : 3 519
Citation:
Envoyé par AurelienNF Voir le message
Je ne connaissais même pas l'existance de pdo
Est-ce vraiment plus utile que mes requetes classiques ? Moins contraignant ?
Saluton,
Il est de plus en plus question que, dans les versions futures de PHP, PDO devienne la seule interface vers les SGBD.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 09h59   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
De la lecture ici

PDO n'est pas simple pour un débutant, mais quitte à partir de zéro ou presque, autant étudier cette interface
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 09h01   #9
Membre du Club
 
Homme Aurelien NF
Inscription : août 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Aurelien NF
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : août 2010
Messages : 216
Points : 59
Points : 59
Envoyer un message via Skype™ à AurelienNF
Merci pour les infos et pour la lecture

Néanmoins, n'ayant pas trop le temps en ce moment, je souhaiterais quand même pouvoir utiliser ce comptage de catégorie dans un langage plus traditionnel. Des que j'aurai le temps je m'occuperai du cas pdo.

De quelle manière m'y prendre pour afficher les résultats de cette requête dans un langage php/mysql traditionnel ?

Merci beaucoup par avance.

Aurélien
AurelienNF 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 17h48.


 
 
 
 
Partenaires

Hébergement Web