{MySQL} Plusieurs Count(*) dans 1 requete

[Résolu/Fermé]
Signaler
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
-
Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
-
Bonjour,
Dans une seule requete SQL je voudrais remonter quelque chose comme

categ totalZ totalY TotalZY
a n1 n2 n3
b m1 m2 m3

totalZ et totalY sont des count(*) normalement.
Pour total de ZY je fais un sum sur les alias et ça me donne le n3 o m3

En SQL server je sais traiter là je sèche.
Tout ce que j'ai testé ne fonctionne pas :
- créer une table temporaire puis l'y mettre mes différents résultats, pis l'appeler à la fin comme dernière requete (echec, erreurs dans tous les sens).
- faire un (SELECT CASE WHEN truc THEN COUNT('Z') ELSE 0 END) AS totalZ (quand je fais un truc du genre sous SQL server j'ai ce que je veux..) là ça me fais pas ce que je veux.
- faire une sous requete (select count(*) as nb from tab where dpt = 75 group by categ)

Dans mon résultat j'attends toujours 2 lignes (a et b) que le résultat de count(*) soit >= 0. Cas inverse afficher 0

Comment faire en mySQL, pour combiner en une seule requete plusieurs count sur un meme regroupement (categ) ?
Je voudrais régler la question par MySQL pas par PHP.

Est-ce que vous avez une idée svp ?

merci d'avance

1 réponse

Messages postés
870
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
8 août 2012
91
Re,
Je change et simplifie l'intitulé de la question.

Dans une même colonne d'un SELECT de 2 lignes par ex, quand on veut faire sur chacune des 2 lignes 1 COUNT(*) on fait comment ?

exemple : Répartition entre homme et femme de ce que vous voulez :
Popuulation - Nb
Homme - 3000
Femme - 9000

Les 3000 : correspondent au résultat d'un COUNT sur certains critères
Les 9000 correspondent au résultant d'un autre COUNT sur d'autres critères.

Mais dans la même colonne je veux pouvoir les dissocier.
Est-ce possible ?
Y a t-il une autre façon de faire que je ne vois pas ?

merci