最好的解决方案是在数据库设计阶段。您的类别表必须是一个 嵌套集 。文章“在MySQL中管理层次结构数据”不是特定于MySQL的(尽管有标题),并且全面概述了在数据库表中存储层次结构的不同方法。
因此,根据您的示例,如果层次结构表是嵌套集,则查询将如下所示:
SELECT * FROM products
INNER JOIN categories ON categories.id = products.category_id
WHERE categories.lft > 2 and categories.rgt < 11
2和11分别是Processors
记录的左侧和右侧。