我有三张 table 。
1.fi_category
+----+-----------------+-----------------+
| id | name | slug |
+----+-----------------+-----------------+
2.fi_subcategory
+----+-----------------+-----------------+-------------+
| id | name | slug | category_id |
+----+-----------------+-----------------+-------------+
3.fi_business_subcategory
+----+-------------+----------------+
| id | business_id | subcategory_id |
+----+-------------+----------------+
我基本上想做的是,
- 获取所有类别
- 获取属于类别的所有子类别。
- 计算特定子类别中存在的商家数量。
这就是我尝试做的。
SELECT
f.id,
f.name,
f.slug,
f2.id,
f2.name,
f2.slug,
COUNT(f3.business_id) as count
FROM
fi_category f
LEFT JOIN
fi_subcategory f2 ON f.id = f2.category_id
LEFT JOIN
fi_business_subcategory f3 ON f2.id = f3.subcategory_id
但是上述查询仅获取 1 条记录。我如何获取我想要的东西?
最佳答案
我会添加一个GROUP BY
子句:
SELECT
f.id,
f.name,
f.slug,
f2.id,
f2.name,
f2.slug,
COUNT(f3.business_id) as count
FROM fi_category f
LEFT JOIN fi_subcategory f2
ON f.id = f2.category_id
LEFT JOIN fi_business_subcategory f3
ON f2.id = f3.subcategory_id
GROUP BY f.id,
f.name,
f.slug,
f2.id,
f2.name,
f2.slug
或者在子查询中获取您的count()
:
SELECT f.id,
f.name,
f.slug,
f2.id,
f2.name,
f2.slug,
f3.cnt
FROM fi_category f
LEFT JOIN fi_subcategory f2
ON f.id = f2.category_id
LEFT JOIN
(
select count(business_id) cnt, subcategory_id
from fi_business_subcategory
group by subcategory_id
) f3
ON f2.id = f3.subcategory_id
关于mysql - 计算外键的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12371304/