5

我有两个表(MySQL):

  1. table_products: // cid (text) - 逗号分隔的类别列表 // id (int11)

    id   cid
    1    1,2,3        
    2    5,21,8
    3    2,4,15
    
  2. 表类别

    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)。

4

1 回答 1

17

如果每个类别都存在于 中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 将返回一个非零值,并且连接将成功。

于 2013-04-17T12:48:34.460 回答