我有一个表示父子关系的表格,这些关系可以延伸到多个级别。
我使用以下查询创建了一个示例表格:
CREATE SEQUENCE relations_rel_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE relations(
rel_id bigint DEFAULT nextval('relations_rel_id_seq'::regclass) NOT NULL PRIMARY KEY,
rel_name text,
rel_display text,
rel_parent bigint
);
我需要查询表格并按层次结构显示父子关系。 我仍然不知道如何使用SQL查询查询n级深度。
对于此sqlfiddle示例,期望的输出层次结构:
rel1
rel11
rel111
rel112
rel1121
rel2
rel21
rel211
rel212
注意:n-level
中的值n是未知的。
数据库设计:
是否有更好的方式可以在数据库中表示这样的关系,以便于进行查询?
此页面
,它描述了你所需的WITH RECURSIVE
查询。 - Ihor Romanchenkorel_parent
结构是树形结构中最自然的设计;它很容易理解,并且在使用WITH RECURSIVE进行常规操作时也很方便。你也可以查看“嵌套集”和“材料化路径”。 - mu is too short