我需要像父母那样呈现数据 - >孩子(行)。我有一个动作按钮,在它下面创建一个新行。
示例:
1 PETER GREGORY 01/01/1987
2 MINK PETERS 01/01/1987(点击此处)
3 CHILD ROW 01/01/1987
我的数据库有以下列:
ID ------ NAME ------ LASTNAME ------ DATE
答案 0 :(得分:1)
首先,您必须拥有数据库,我将创建一个通用的
-- this will create your table + primary key (i'm not sure what action data type is)
create table test (
id serial PRIMARY KEY,
id_parent integer,
col1 text
)
在每个插页上,您将自动生成 id 字段,因为它是一个序列,您不需要在插入语句中添加它
假设您已经拥有root父级,这意味着id_parent值为null
root id = 1,2,3
INSERT INTO test (id_parent, col1) values (null, 'I'm parent 1')
INSERT INTO test (id_parent, col1) values (null, 'I'm parent 2')
INSERT INTO test (id_parent, col1) values (null, 'I'm parent 3')
因此,当您想要插入值时,您只需运行查询
INSERT INTO test (id_parent, col1) values (1, 'parent id is 1')
上面的插入语句会自动生成 id 字段,因为它是一个序列号。
如果我们再插入一些记录
INSERT INTO test (id_parent, col1) values (1, 'parent id is 1')
INSERT INTO test (id_parent, col1) values (1, 'second insert parent id is 1')
INSERT INTO test (id_parent, col1) values (2, 'first insert parent is 2')
INSERT INTO test (id_parent, col1) values (2, 'second insert parent id is 2')
你现在应该在db中有7条记录,3个根父母和我们插入的4个孩子
要检索您想要通过连接语句
引用到父列的数据select
parent.id
,child.id
,child.parent_id
from test parent
join test child = parent.id = child.id_parent
order by child.parent_id
你会得到一些看起来像
的东西parent.id | child.id | child.parnet_id
1 | 4 | 1
1 | 5 | 1
2 | 6 | 2
2 | 7 | 2
然后如果你通过
为parent_id 1做另一个插入INSERT INTO test (id_parent, col1) values (1, 'parent id is 1')
你会得到
parent.id | child.id | child.parnet_id
1 | 4 | 1
1 | 5 | 1
1 | 8 | 1
2 | 6 | 2
2 | 7 | 2
如果要将同一个表用于递归连接,这是一般基础知识。我希望有帮助吗?我还没有测试任何代码,所以可能会有一些语法错误,但这是一般的想法