我在德比有一张桌子:
CREATE TABLE IMPORT_RULES
(RULEID INTEGER NOT NULL,
PARENTID INTEGER,
NAME VARCHAR(25) NOT NULL,
PRIMARY KEY (RULEID))
PARENTID是父级的RULEID,但父/子关系是未知的深度。
我的目标是创建一个表示分层数据的DefaultMutableTreeNode。
我的想法是,最好的方法是让SQL查询返回数据库中每个项目的“级别”,然后从最低级别向后循环到最高级别。
我的问题是我似乎无法为Derby提出查询......
有关如何生成此查询或以其他方式实现目标的任何想法?
答案 0 :(得分:1)
如果H2 Database是可接受的替代方案,则它支持Recursive Queries。有关自定义树模型,请参阅此answer。
答案 1 :(得分:0)
我认为没有一个查询可以实现你的目标,如果有它必须在我的头顶。就性能而言,模式有效的方式将“深度”保存在单独的表中并不好。所以简单地说,将树节点数据保存在IMPORT_RULES表中,并将每个节点的深度保存在一个单独的表中,比如IMPORT_RULE_LEVEL,它将节点ID和相关深度保存到全局根节点。
但显然,如果在分支中间插入新节点,有时可能需要批量更新。如果你所有的逻辑需要做的只是附加子节点,那么一个单独的表将是一个不错的选择。