我有一个带有两个表的 MySQL 数据库。第一个是部门层次结构,其中每条记录都有来自同一个表中的父记录,顶层的 parent_id 为 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