2011-07-04 6 views
0

MERCI À TOUS - RÉSOLU!MySQL Query, Count numéro

J'ai le code suivant:

SELECT region, division, SUM(staff_count) AS Total_Staff, 
(SELECT COUNT(region) FROM tresults_xyc WHERE division = 'Central' GROUP BY region) AS Total_Responses 
FROM `trespondent_xyc` 
WHERE division = 'Central' 
GROUP BY region 

Il ramène les éléments suivants:

region division Total_Staff Total_Responses 
1  Central  212   8 
2  Central  168   8 
3  Central  164   8 
4  Central  180   8 

Les informations contenues dans la région de colomns, division et Total_Staff sont corrects.

Cependant, le Total_Responses colomn n'est pas - qui montre le nombre total de réponses pour la division et non chaque région.

Quelqu'un peut-il conseiller?

Merci d'avance,

Homer.

+0

Votre requête intérieure n'a pas toute référence à la région compte ainsi des valeurs pour tous. – zerkms

Répondre

2

Vous devez faire ceci:

SELECT region, division, SUM(staff_count) AS Total_Staff, 
     (
      SELECT COUNT(*) 
      FROM tresults_xyc t2 
      WHERE t2.region = t1.region 
     ) AS Total_Responses 
FROM `trespondent_xyc` t1 
WHERE division = 'Central' 
GROUP BY region 
+0

La deuxième requête produira des résultats différents – zerkms

+0

En effet, la première requête a fonctionné parfaitement. Le second produit des résultats faux! –

0

essayer

SELECT region, division, SUM(staff_count) AS Total_Staff, (SELECT COUNT(region) FROM tresults_xyc WHERE division = 'Central' and region = xx.region GROUP BY region) AS Total_Responses 
FROM `trespondent_xyc` xx 
WHERE division = 'Central' 
GROUP BY region 
+0

Fonctionne, sauf qu'il ramène NULLS, le code avant (première requête) me ramène des zéros où il n'y a pas de réponses. –