当前位置:  开发笔记 > 编程语言 > 正文

Mysql,可能的嵌套类别问题

如何解决《Mysql,可能的嵌套类别问题》经验,为你挑选了1个好方法。

我有一个mysql问题.

我有一个应用程序,我从Coldfusion和MSSql迁移到PHP/Mysql.

有类别和子类别(显然无限的子类别).

在给定navigationID的情况下,获取product表中所有记录的最佳方法是什么.

我正在处理两个表.一个是Products表(其nav_id对应于--->),另一个是包含父/子关系的类别关系表.

所以基本上我想查询两个表以生成与navigationID和NavigationID的子类别相关联的所有产品.

任何想法或方向?我知道必须这样做.认为答案将在于嵌套查询,但无法绕过它.

Nav_table - 包含

ChildNavId      int(11)
ParentNavId     int(11)

Products_Table - 包含

productNavID    int(11) // productNavID contains the lowest level NavID 

bobince.. 5

有类别和子类别(显然无限的子类别).

如果您有很多级别的类别嵌套,那么您无法使用"父引用"模式模型通过单个查询获取它们.您必须反复查询您找到的每个类别的子项,递归,或者只是继续执行更长和更长的自连接,直到您选择了最深层次嵌套的项目.

对于对分层数据的单一查询访问,您必须研究构建模式的其他方法,主要是:

嵌套集:存储树上递归遍历的数字排序

邻接关系:为您的子/父查找添加额外的祖先/后代对

这些方法中的任何一种或两种都可能适合您.(我通常最终得到嵌套集,这样我也可以得到一个明确的倒数第一个订单.)



1> bobince..:

有类别和子类别(显然无限的子类别).

如果您有很多级别的类别嵌套,那么您无法使用"父引用"模式模型通过单个查询获取它们.您必须反复查询您找到的每个类别的子项,递归,或者只是继续执行更长和更长的自连接,直到您选择了最深层次嵌套的项目.

对于对分层数据的单一查询访问,您必须研究构建模式的其他方法,主要是:

嵌套集:存储树上递归遍历的数字排序

邻接关系:为您的子/父查找添加额外的祖先/后代对

这些方法中的任何一种或两种都可能适合您.(我通常最终得到嵌套集,这样我也可以得到一个明确的倒数第一个订单.)

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有