比如知道父菜单`求父菜单下子菜单`和子菜单的子菜单```
还有知道某个子菜单``可以查询其父菜单和父菜单的父菜单``直到查到最上层```
求详解

解决方案 »

  1.   

    left join 做连接 只能用2层  再多的话都是把数据查询出来
    然后进行树形处理..
      

  2.   

    层次型数据在关系型数据中主要有三种方法:邻接模型(adjacency model)、物化路径模型(materialized path model)和嵌套集合模型(nested sets model)。我不知道你菜单表的结构是如何设计的?如果是采用 parent id 的话,那就是邻接模型。在 MySQL 的 dev 上有一篇关于层次型数据的处理,那篇文章中介绍了邻接模型和嵌套集模型两种,以及在 MySQL 中如何实现。Managing Hierarchical Data in MySQL
    http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
      

  3.   

    仰慕啊!想不到这里还有这么多学问,相比之下,我以前用惯了的那一套感觉好像是在石器时代。如果数据量不大的话,还是“邻接模型”简单。不过我一般不会用 SQL 语句来挂接父子关系,而是简单地把数据记录全部读过来后用程序来扫描挂接。看了那篇文章后,我设想,如果是数据量足够大,每次查询又只需访问一个子集的话,可以考虑用“邻接模型+嵌套集合模型”的复合方式进行存储,查询时利用“嵌套集合模型”得到相关的数据记录,然后通过程序处理利用“邻接模型”对数据对象进行父子关系挂接,hehe,瞎想而已……
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)[/size]