我有两个表(MySQL):
table_products:// cid(text) - 逗号分隔的类别列表// id(int11)
id cid
1 1,2,3
2 5,21,8
3 2,4,15
table_categories
id name parent
1 Cat1 0
2 Cat2 0
3 Cat3 0
4 Cat4 0
这是我的要求:
SELECT `id`, `name`, `parent`
FROM `table_categories`
ORDER BY `parent` ASC, `id` ASC;
如何执行上述请求并获取每个类别中的产品数量(来自table_products)。 可能正在使用(FIND_IN_SET)。
答案 0 :(得分:8)
如果table_categories
中存在每个类别,那么您可以使用:
SELECT table_categories.name, count(table_products.id)
FROM
table_categories LEFT JOIN products
ON FIND_IN_SET(table_categories.id, products.cid)
GROUP BY table_categories.name
如果products.cid中存在table_categories.id,则FIND_IN_SET将返回非零值,并且连接将成功。