MySQL嵌套集搜索
|
我真的很想在我们的PHP / MySQL驱动的商店中处理嵌套集查询,我将以电子零件为例。
类别存储为嵌套集合模型(左,右和深度)。
当客户浏览商店时,他们可以按品牌,类别,价格范围等过滤产品列表。
假设某个客户正在查看Sony的所有产品。索尼将在计算,电视,音频和家用设备中拥有产品。
但是Sony产品没有存储在这些类别中(但是可以存储),它们存储在那些主要类别的子类别中,例如:
Televisions > LCD > Widescreen
Televisions > CRT
Computing > Optical Drives > DVD-RW
Computing > Input Devices > Wireless > Keyboards
Audio > Portable > MP3
Household Appliances
客户选择了Sony之后,我希望他们可以选择按类别缩小范围,因此他们最初会有以下选择:
Televisions
Computing
Audio
Household Appliances
但我只能执行一个查询,以带回特定类别的列表:
Widescreen
CRT
DVD-RW
Keyboards
MP3
Household Appliances
我需要显示主要类别,然后如果客户选择电视,他们将获得选择:
LCD
CRT
任何人都可以帮我解决这个问题,最好以尽可能短的递归(因此首先使用嵌套集)或太多查询的方式尽快返回信息,我将不胜感激。
这是我用来获取子类别列表的查询,如果它有助于数据库的结构:
select c.categories_id, cd.categories_name, c.parent_id, c.lft, c.rgt, c.dpth
from categories c
inner join categories_description cd on cd.categories_id = c.categories_id
inner join products_to_categories p2c on p2c.categories_id = c.categories_id
inner join products p on p.products_id = p2c.products_id
where cd.language_id=\'1\'
and c.lft between 3489 and 3670
and c.categories_status = \'1\'
group by c.categories_id
order by sort_order, cd.categories_name
由于数据库最初是一个邻接模型结构,因此每个类别ID也会存储父ID,如果这样做可以简化任何操作的话。
谢谢。
没有找到相关结果
已邀请:
1 个回复
断跑胺弄萎