我有下表: 类别:
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
任何人都知道我如何才能得到想要的结果。我也尝试过 join 语句,但它们总是给我返回错误。
提前致谢。
最佳答案
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
,除了计算当前类别的子类别的子选择之外。
关于mysql - 将 () 算作某物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718469/