如何以一种简单的SELECT
检索自定义树结构的根节点?
伪代码
class Node {
Long id;
String label;
Node parent;
List<Node> children;
}
编辑:表格如下。随意建议改进。
CREATE TABLE NODES(
ID INTEGER NOT NULL UNIQUE,
LABEL VARCHAR(255)
);
CREATE TABLE PARENTS_CHILDREN(
PARENT_ID INTEGER NOT NULL,
CHILD_ID INTEGER NOT NULL
);
答案 0 :(得分:1)
您可以使用邻接列表:
node parent
1 NULL
2 1
3 1
4 2
5 NULL
6 5
可以使用WHERE parent IS NULL
找到根节点。
答案 1 :(得分:1)
如果每个子节点最多只有一个父节点,则无需在单独的表中对关系建模。此外,为了更快地加载树,代价是更慢地更改根,请将根节点的ID存储在每一行中。这允许您在一个快速查询中加载树的所有节点,并在客户端上构建树。
CREATE TABLE NODES(
ID INTEGER NOT NULL UNIQUE,
ROOT_ID INTEGER NOT NULL,
PARENT_ID INTEGER,
LABEL VARCHAR(255)
);