我有一个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
答案 0 :(得分:5)
有类别和子类别(显然无限的子类别)。
如果您有很多级别的类别嵌套,那么您无法使用“父引用”架构模型通过单个查询获取它们。你必须反复查询你找到的每个类别的子项,递归地,或者只是继续做更长和更长的自连接,直到你选择了最深层嵌套的项目。
对于对分层数据的单一查询访问,您必须考虑构建模式的其他方法,主要是:
这些方法中的任何一种或两种都可能适合您。 (我通常最终得到嵌套集,这样我也可以获得明确的倒数第二顺序。)
答案 1 :(得分:0)
听起来像一个整齐编写的递归算法的工作,但正如亚历克斯泰勒所说,我们需要一个模式对你有用。