MySQL中所有父级和子级的总计数

时间:2016-05-26 06:27:46

标签: mysql

我有两张桌子:

tbl_cat:

id parent_id cat_name 
1   0           a
2   1           b
3   1           c
4   0           d
5   4           f

tbl_article:

id cat_id article
1    1      abc
2    1      xyz
3    2      hgu
4    4      hju
5    3      kkk

我想和所有孩子一起计算父母的文章数量。我想要像

这样的记录
  id parent_id cat_name article_count
    1   0           a          3
    2   1           b          NULL
    3   1           c          NULL
    4   0           d          1
    5   4           f          NULL

2 个答案:

答案 0 :(得分:0)

您可以使用COUNT()来计算行数,并可以使用JOIN根据cat_id将文章与其类别进行匹配。您将获得0而不是NULL因为COUNT()计算行的方式,如果没有行,它将返回0,而不是NULL

SELECT c.id, c.parent_id, c.cat_name, COUNT(*) AS article_count
FROM tbl_cat AS c JOIN tbl_article AS a ON c.id=a.cat_id
GROUP BY c.id;

答案 1 :(得分:0)

请尝试此代码

SELECT c.id,c.parent_id,c.cat_name,a.article_count    
FROM tbl_cat AS c 
,(
  SELECT cat_id,COUNT(article) AS article_count
  FROM tbl_article
  GROUP BY cat_id
 ) AS a
WHERE c.id = a.cat_id