0

我有一个带有两个表的 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  
4

0 回答 0