Таблица категорий:

id, name
---------
1   cat1
2   cat2
3   cat3 
4   cat4

Таблица артикулов:

id, cid, title
--------------
1   1    title1
2   3    title2
3   1    title3
4   2    title4   

Как выбрать все категории и подсчитать количество статей каждой категории в MySQL? Мне нужен запрос mysql, который выберет всю категорию и общее количество статей, принадлежащих каждой категории, и упорядочит их по идентификатору категории.

Ожидаемая выходная таблица:

+-------+-------+    
|  name | count |    
+-------+-------+    
|  cat1 |     2 |    
|  cat2 |     1 |    
|  cat3 |     1 |  
|  cat4 |     0 |  
+-------+-------+
3
Clinton 27 Апр 2016 в 14:47

5 ответов

Лучший ответ

Вы также можете использовать подзапрос, например

SELECT c.name,(select count(*) from article where cid = c.id) as count  FROM cat c WHERE 1 GROUP BY c.id 
0
Brijal Savaliya 27 Апр 2016 в 12:00

Я надеюсь, что это сработает. Пожалуйста, проверьте.

select
    Category.name.
    ifnull(count(Article.cid),0) as count
FROM
    Category
LEFT JOIN
    Article 
on
    Article.cid=Category.id
group by
    Category.Id 
0
Community 22 Авг 2019 в 11:36
select c.name,count(b.title)count from category a, article b where c.id = a.cid group by c.name order by a.cid;
1
Priyanshu 27 Апр 2016 в 11:52

Попробуйте это:

SELECT c.`name`, count(a.cid) as count FROM category
LEFT JOIN article
ON c.id = a.cid
GROUP BY a.cid
1
Murad Hasan 27 Апр 2016 в 11:51
SELECT
    c.`name`,
    COUNT(a.cid) AS `count`
FROM
    categories c
    LEFT JOIN article a ON c.id = a.cid
GROUP BY
    c.`name`
ORDER BY
    c.`name`
3
mitkosoft 27 Апр 2016 в 11:53