Mysql,可能的嵌套类别问题

时间:2009-03-24 21:59:59

标签: mysql

我有一个mysql问题。

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

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

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

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

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

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

Nav_table - 包含

ChildNavId      int(11)
ParentNavId     int(11)

Products_Table - 包含

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

2 个答案:

答案 0 :(得分:5)

  

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

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

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

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

答案 1 :(得分:0)

听起来像一个整齐编写的递归算法的工作,但正如亚历克斯泰勒所说,我们需要一个模式对你有用。