【问题标题】:Combine three tables in MS Access 2003在 MS Access 2003 中合并三个表
【发布时间】:2012-06-24 05:37:52
【问题描述】:

我在 Access 2003 中有三个查询,我需要将它们合并到一个查询中。并非所有记录都存在于所有三个表上,所以我想我想要一个完整的外部连接。

查询 1 字段: Record number, surname, firstname, subcentre

查询 2 个字段: Record number, surname, firstname, case worker

查询 3 个字段: Record number, surname, firstname, doctor

我需要能够显示:

Record number, surname, firstname, case worker, doctor, subcentre

但是,目前我可以练习如何在两个查询之间使用左连接然后用右连接联合,但不知道如何将其扩展到三个查询。

有什么想法/建议吗?

【问题讨论】:

    标签: ms-access ms-access-2003


    【解决方案1】:

    怎么样:

    SELECT a.[Record number], a.surname, a.firstname, 
           t1.subcentre, t2.[case worker], t3.doctor
    FROM
    (((SELECT [Record number], surname, firstname FROM T1
    UNION
    SELECT [Record number], surname, firstname FROM T2
    UNION
    SELECT [Record number], surname, firstname FROM T3) As A
    LEFT JOIN T1 ON A.[Record number]=T1.[Record number])
    LEFT JOIN T2 ON A.[Record number]=T2.[Record number])
    LEFT JOIN T3 ON A.[Record number]=T3.[Record number]
    

    在查询中使用 UNION 而不是 UNION ALL 会创建一个唯一的 [Record number], surname, first name 列表,该列表取自所有三个表。然后可以使用派生表与其他三个表进行 LEFT JOIN 连接。 LEFT JOIN 确保包含派生表中的所有记录。

    与 SQL 一样,还有其他类似的方法可以做到这一点。对于非常大的文件,上述操作会很慢,但是除非您有 Jet/ACE 后端以外的其他东西,否则您不太可能会注意到任何延迟。

    例如,使用 SQL Server 后端,您将使用传递查询和 t-sql 语法。对于 MySQL 后端,我认为当您超过一个 UNION 语句时,您必须使用直通查询。

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多