我有下表: 类:
cat_id | cat_cat | cat_name
1 | 0 | name1
2 | 0 | name2
3 | 1 | name3
4 | 2 | name4
5 | 2 | name5
6 | 0 | name6
7 | 1 | name7
我试图用cat_cat = 0选择所有类别,并选择将cat_cat作为当前cat_id的每条记录的计数,基本上给我以下结果:
cat_id | cat_cat | cat_name | cat_subcats
1 | 0 | name1 | 2
2 | 0 | name2 | 2
6 | 0 | name7 | 0
我尝试了多个查询,目前的查询如下:
SELECT i.* , COUNT( i2.icon_id ) AS subcats
FROM themes_icons i, themes_icons i2
WHERE i.icon_cat = '0'
AND i2.icon_cat = i.icon_id
GROUP BY i.icon_cat, i2.icon_id
ORDER BY i.icon_order ASC
这个查询似乎给了我以下结果:
cat_id | cat_cat | cat_name | cat_subcats
1 | 0 | name1 | 1
1 | 0 | name1 | 1
2 | 0 | name2 | 1
2 | 0 | name2 | 1
6 | 0 | name7 | 0
任何人都知道如何获得理想的结果。我也尝试过加入声明,但是它们一直给我错误。
提前致谢。
答案 0 :(得分:2)
SELECT c1.cat_id, c1.cat_cat, c1.cat_name,
(
SELECT COUNT(*)
FROM categories c2
WHERE c2.cat_cat=c1.cat_id
) AS cat_subcats
FROM categories c1
WHERE c1.cat_cat=0
它是一个标准的SELECT
,除了用于计算当前类别的子类别的子选择。