2014-01-09 36 views
0

我有一个查询:MySQL查询得到的对象总数

SELECT t1.id, 
     t3.title, 
     Count(t2.city_id) AS objectsCount 
FROM geo_data AS t1 
     INNER JOIN object AS t2 
       ON t1.uid = t2.city_id 
        AND t2.is_blocked = 0 
     JOIN geo_data_translation AS t3 
     ON t1.id = t3.id 
      AND t3.language_id = 'de' 
WHERE t1.is_city = 1 
GROUP BY name; 

结果是:

+-----+------------------------------+--------------+ 
| id | title      | objectsCount | 
+-----+------------------------------+--------------+ 
| 404 | Achim      |   1 | 
| 85 | Ahrensburg     |   3 | 
| 305 | Ahrensfelde     |   2 | 
| 471 | Aichach      |   1 | 
| 377 | Alfeld (Leine)    |   1 | 
| 373 | Algermissen     |   2 | 
| 465 | Allershausen     |   1 | 
| 525 | Alsheim      |   1 | 
| 152 | Altenmoor     |   1 | 
| 482 | Anzing      |   1 | 
| 518 | Armsheim      |   3 | 
| 562 | Arnsdorf      |   1 | 
| 109 | Artlenburg     |   1 | 
| 476 | Aschheim      |   1 | 
| 224 | Asendorf      |   1 | 
| 436 | Augusta      |   1 | 
| 447 | Aystetten     |   1 | 
| 360 | Banteln      |   1 | 

我们看到的是他们的对象nomber城市的列表。 Achim城市有1个对象,Ahrensburg有3个对象等

我想要做的是也得到所有上市城市的总物件数。 感谢

+1

文档试图通过完全移除集团和改变SELECT为“SELECT COUNT(t2.city_id)” –

+0

鉴于这种中间结果,将所期望的结果是什么样子? – Strawberry

回答

0
select t1.title,sum(t1.objectscount)as 'total_count' from table1 t1 
group by t1.title 
0
SELECT 
    COUNT(*) AS objectsCount 
FROM 
    geo_data AS t1 
    INNER JOIN object AS t2 
     ON t1.uid   = t2.city_id 
     AND t2.is_blocked = 0 
    INNER JOIN geo_data_translation AS t3 
     ON t1.id   = t3.id 
     AND t3.language_id = 'de' 
WHERE 
    t1.is_city = 1; 
0

试试这个:

SELECT name, 
     t1.id, 
     t3.title, 
     Count(t2.city_id) AS objectsCount 
FROM geo_data AS t1 
     INNER JOIN object AS t2 
       ON t1.uid = t2.city_id 
        AND t2.is_blocked = 0 
     JOIN geo_data_translation AS t3 
     ON t1.id = t3.id 
      AND t3.language_id = 'de' 
WHERE t1.is_city = 1 
GROUP BY name WITH ROLLUP; 

WITH ROLLUP选项将使添加额外的一行name = NULL,共包括所有计数。

GROUP BY Modifiers