我使用嵌套的set体系结构在数据库中建模了一个父-子关系。
每个孩子(树叶)都链接到一个包含开始日期的表上,但父母不是。
我希望能够取回在某一时间打开的所有叶子,如果父母的所有孩子都被打开的话,他们的父母也会这样做。
有这么快的事吗?我想象一些类似于提出子请求的东西,但这既不是漂亮的,也不是快速的;最好的方法是只在一个查询中完成它。
我可以将嵌套的set体系结构更改为另一个体系结构,以便更容易地构建此请求吗?
编辑:
我正在使用MySql,但如果这是实现我的目标所必需的,我可以更改到任何其他数据库。
这就是我的节点(父-子)表的样子:
id (int)
lft (int)
rgt (int)
root_id (int , self reference to the root id, used to generate multi-rooted tree)
level (int)
name (string)
description (string)
...我的opening_dates表如下所示:
id (int)
node_id (int)
start (datetime)
end (datetime)
status (bool, 0 for an opened date, 1 for a close one)我还补充说,我的父-子结构不会经常更改,这就是为什么我决定采用嵌套的set体系结构。我在这里的目标是在“选择查询”系统时尽可能快。
发布于 2012-05-24 13:59:30
据我所知,MySQL不支持分层查询。使用Oracle非常简单,但如果使用MySQL,则可能需要为此目的创建存储函数。试着读如何在MySQL中创建分层查询
https://stackoverflow.com/questions/10737655
复制相似问题