在MS Access 2003中组合三个表

时间:2012-06-24 05:37:52

标签: ms-access ms-access-2003

我在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

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

有任何想法/建议吗?

1 个答案:

答案 0 :(得分:3)

怎么样:

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语句时,你有义务使用直通查询。