db2 查询显示在另一个 table 中为每个值重复的记录
db2 query which shows records repeated for each value in another table
我需要将记录插入到例如table 1 通过为引用 table 中的每个记录创建 table 中每个现有记录的新实例,例如参考 table 1.
所以,例如...
Table 1
ID = 1, Name = John, Ref Table 1 ID = null
参考 Table 1
ID = 1, Name = Grade 1
ID = 2, Name = Grade 2
想要SQL的结果
Table 1
ID = 1, Name = John, Ref Table 1 ID = 1
ID = 2, Name = John, Ref Table 1 ID = 2
甚至
ID = 1, Name = John, Ref Table 1 ID = null
ID = 2, Name = John, Ref Table 1 ID = 1
ID = 3, Name = John, Ref Table 1 ID = 2
是否可以使用标准 SQL?
希望在一个查询中获得所有内容,因为目前看来我必须为每个 ref table 1 条记录重复它。
谢谢
尝试这样的事情:
为插入结果创建 table:
CREATE TABLE to_insert(
ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1)
,Name VARCHAR(100)
,Ref_Table1_ID INTEGER
,PRIMARY KEY(ID)
,FOREIGN KEY(Ref_Table1_ID) REFERENCES(ref_table_1)
);
执行插入查询:
INSERT INTO to_insert(Name, Ref_Table1_ID)
SELECT t1.Name, COALESCE(t1.Ref_Table1_ID, rt1.ID) Ref_Table1_ID
FROM table_1 t1 FULL OUTER JOIN ref_table_1 rt1 ON (t1.Ref_Table1_ID = rt1.ID)
也许我遗漏了什么,但为什么不这样做:
SELECT * FROM tbl_1, tbl_2
结果将是:
tbl_1.ID tbl_1.Name Ref Table ID tbl_2.ID tbl_2.Name
1 John 1 Grade 1
1 John 2 Grade 2
哪里tbl_1
ID Name Ref Table ID
1 John NULL
和tbl_2
ID Name
1 Grade 1
2 Grade 2
最后,只有 select 所需的列。
我需要将记录插入到例如table 1 通过为引用 table 中的每个记录创建 table 中每个现有记录的新实例,例如参考 table 1.
所以,例如...
Table 1
ID = 1, Name = John, Ref Table 1 ID = null
参考 Table 1
ID = 1, Name = Grade 1
ID = 2, Name = Grade 2
想要SQL的结果 Table 1
ID = 1, Name = John, Ref Table 1 ID = 1
ID = 2, Name = John, Ref Table 1 ID = 2
甚至
ID = 1, Name = John, Ref Table 1 ID = null
ID = 2, Name = John, Ref Table 1 ID = 1
ID = 3, Name = John, Ref Table 1 ID = 2
是否可以使用标准 SQL?
希望在一个查询中获得所有内容,因为目前看来我必须为每个 ref table 1 条记录重复它。
谢谢
尝试这样的事情:
为插入结果创建 table:
CREATE TABLE to_insert( ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) ,Name VARCHAR(100) ,Ref_Table1_ID INTEGER ,PRIMARY KEY(ID) ,FOREIGN KEY(Ref_Table1_ID) REFERENCES(ref_table_1) );
执行插入查询:
INSERT INTO to_insert(Name, Ref_Table1_ID) SELECT t1.Name, COALESCE(t1.Ref_Table1_ID, rt1.ID) Ref_Table1_ID FROM table_1 t1 FULL OUTER JOIN ref_table_1 rt1 ON (t1.Ref_Table1_ID = rt1.ID)
也许我遗漏了什么,但为什么不这样做:
SELECT * FROM tbl_1, tbl_2
结果将是:
tbl_1.ID tbl_1.Name Ref Table ID tbl_2.ID tbl_2.Name
1 John 1 Grade 1
1 John 2 Grade 2
哪里tbl_1
ID Name Ref Table ID
1 John NULL
和tbl_2
ID Name
1 Grade 1
2 Grade 2
最后,只有 select 所需的列。