我有一个名为的表categories
和一个名为 的表business_categories_coupling
。在类别中,您有通常的id
, name
, parent
。在耦合表中,您有business_id
和category_id
。每个企业可以有多个类别,所以我将它们存储在该表中。它看起来像这样:
business_id category_id
73 80
73 81
73 90
74 4
74 10
现在,我的查询只是选择所有类别,在每个循环中执行一次 foreach 和一次 db 查询,以查找该类别中有多少企业。显然不是正确的方法。
有没有办法做一个基本上选择所有类别的 SQL 查询,获取它在耦合表中出现的次数,并为每个类别添加一个计数?
SELECT
C.*
FROM
CATEGORIES AS C
LEFT JOIN
BUSINESS_CATEGORIES_COUPLING AS B
ON
C.id = B.category_id;
有点像那样,但在某个地方有一个计数。我尝试了各种设置,但没有像我想要的那样工作。有什么建议么?
编辑 1
@phani-rahul 提供的解决方案,但我添加了 WHERE 子句:
SELECT cat.id AS id, cat.name AS name, cat.slug AS slug, COUNT(cat.id) AS business_count
FROM categories AS cat
LEFT JOIN business_categories_coupling AS coupling ON cat.id=coupling.category_id
WHERE coupling.category_id IS NOT NULL
GROUP BY cat.id