2011-07-04 15 views
0

みなさん、ありがとうございます!MySQLクエリ、カウント問題

Iは、次のコードを有する:

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 

には以下を戻す:

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

colomns領域、分割、及びTotal_Staffに含まれる情報が正確です。

しかし、Total_Responses列はそうではありません。つまり、各領域ではなく、その部門の合計応答数を示しています。

誰も助言できますか?

ありがとうございます。

ホーマーです。

+0

を試してみてください。 – zerkms

答えて

2

あなたはこれをしなければならない。

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

2番目のクエリは異なる結果を生成します – zerkms

+0

実際、最初のクエリは完全に機能しました。 2番目に偽の結果が出ました! –

0

は、あなたの内側のクエリが地域にいない任意の参照は、このようにすべての値をカウントした

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

Worksは、NULLSを返しますが、前のコード(最初のクエリ)は応答がない場合に0を返します。 –