MySQL - 在嵌套表中搜索记录

时间:2012-08-31 10:53:33

标签: mysql

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

0 个答案:

没有答案