新手问题 self join 的一个输出问题!

stephen · 2014年04月04日 · 最后由 hz_qiuyuanxin 回复于 2014年04月04日 · 1876 次阅读

表内关联 menu(id, parent_id) parent_id is nil代表根! 我现在想输出一个表格

行1 root1
行2 leave1 with root1
行3 leave2 with root1
行4 root2
行5 leave1 with root2
行6 leave2 with root2

其中一种方式就是先搜索出所有的根,然后用两层循环在 view 中输出 如果想在数据库中,就排好,直接在 view 中一次循环就全部输出,应该怎么写? 还有请教下,哪种效率会好一些?

先搜索出根,然后两层循环输出是最简单的方式,如果数据不多,那没什么多大问题。

其实树的存储和查询相对来说是一个比较复杂的问题, 而对于树的查询,像 MySQL PostgreSQL 都支持 递归查询,楼主可以 google 一把。

另外,跟 Rails 相关的有几个插件,这里贴一个 ancestry 的相关链接

https://github.com/stefankroes/ancestry http://railscasts.com/episodes/262-trees-with-ancestry

需要 登录 后方可回复, 如果你还没有账号请 注册新账号