我有一个带有两个表的MySQL数据库。第一个是部门层次结构,其中每个记录都有来自同一个表的父记录,而顶层的父记录为0。
第二个是产品表。每个产品都可以存在于部门树的任何地方。
我需要能够让人们通过指定要在其中搜索的部门来搜索产品,但是要搜索以查找指定部门的所有子部门。这可以在一个查询中完成吗?
我的“计划B”是将每个产品的父ID列表存储在一个新字段中,并使用LIKE查询搜索该字段,但这看起来有些令人讨厌。
虚拟数据:
id|parent_id|name
1|0|Main 1
2|0|Main 2
3|0|Main 3
4|1|Sub 1-1
5|1|Sub 1-2
6|1|Sub 1-3
7|4|Sub 1-1-1
8|4|Sub 1-1-2
9|4|Sub 1-1-3
id|department|product
1|1|test product 1
2|4|test product 2
3|7|test product 3
SELECT * FROM products WHERE department = 1 ; want to receive all three products
SELECT * FROM products WHERE department = 4 ; want to receive products 2 and 3
SELECT * FROM products WHERE department = 7 ; want to receive only product 3