带有FIND_IN_SET的两个表的MYSQL请求

时间:2013-04-17 12:44:27

标签: mysql count request

我有两个表(MySQL):

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

    id   cid
    1    1,2,3        
    2    5,21,8
    3    2,4,15
    
  2. table_categories

    id   name   parent        
    1    Cat1   0      
    2    Cat2   0
    3    Cat3   0
    4    Cat4   0  
    
  3. 这是我的要求:

    SELECT `id`, `name`, `parent`
    FROM `table_categories`
    ORDER BY `parent` ASC, `id` ASC;
    

    如何执行上述请求并获取每个类别中的产品数量(来自table_products)。 可能正在使用(FIND_IN_SET)。

1 个答案:

答案 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将返回非零值,并且连接将成功。