【问题标题】:db2 query which shows records repeated for each value in another tabledb2 查询显示为另一个表中的每个值重复的记录
【发布时间】:2015-12-11 18:03:36
【问题描述】:

我需要将记录插入到例如表 1 通过为其中一个参考表中的每个记录创建表中每个现有记录的新实例,例如参考表1。

所以,例如...

表 1

ID = 1, Name = John, Ref Table 1 ID = null

参考表 1

ID = 1, Name = Grade 1
ID = 2, Name = Grade 2

想要的 SQL 结果 表一

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 表 1 记录重复它。

谢谢

【问题讨论】:

    标签: sql select insert db2


    【解决方案1】:

    也许我错过了什么,但为什么不直接做:

    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
    

    最后,只需选择所需的列。

    【讨论】:

      【解决方案2】:

      试试这样的:

      1. 为插入结果创建表:

        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) );

      2. 执行插入查询:

        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)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多