让我说我有这个数据:
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查询执行此操作?