两个表之间的递归

时间:2018-08-30 12:42:15

标签: sql recursion

让我说我有这个数据:

create table A (
id int
);

create table B (
id int
);

create table pairs(
id_A int,
id_B int
);

create table owners_A(
owner varchar(1),
id_A int
);

create table owners_B(
owner varchar(1),
id_B int
);

insert into A values (1),(2),(3);

insert into B values(1001),(1002),(1003),(1004),(1005);

insert into pairs values(1,1001),(2,1002),(2,1003),(3,1004),(3,1005);

insert into owners_A values ('A',1),('B',2),('B',3);

insert into owners_B values ('A', 1001), ('A',1002), ('B',1003), ('B', 1004), ('C', 1005);

使用这种结构,我想创建一个查询,该查询从一个名称开始,查找该名称拥有的所有A和B,然后还找到与已经找到的B和A配对的所有新A和B。

因此,根据上面提供的数据,如果我从以下内容开始:

  • A,我会得到1、1001、1002、2、1003(以任何顺序,也可以是 像(1,NULL),(NULL,1001),(NULL,1002),(2,NULL),(NULL,1003))

  • B,我会得到2,1003,1004,1002,3,1005

  • C,我会得到1005、3、1004

我可以使用一种编程语言对多个查询执行此操作,但是有一种方法可以对单个sql查询执行此操作?

0 个答案:

没有答案