2014-01-09 9 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 | 

Что мы видим список городов с их номер объявления объектов. В городе Ахим есть 1 объект, и у Аренсбурга 3 объекта и т. Д.

Что я хочу сделать, так это также получить общее количество объектов для всех перечисленных городов. Благодаря

+1

Попробуйте удалить GROUP BY в целом и изменения ВЫБРАТЬ к «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

Смежные вопросы