【发布时间】:2014-08-25 00:45:27
【问题描述】:
我在 Access 2010 中有四个表,每个表都有相同的主键。我想将所有四个表中的所有数据连接到一个表中,其中每个值的列都与所有表的主键相关联。所以,例如:
Table1
ID Value1
1 10
2 7
3 4
4 12
Table 2
ID Value2
1 33
2 8
6 19
7 4
Table 3
ID Value3
1 99
2 99
5 99
7 99
我想创建:
Table 4
ID Value1 Value2 Value3
1 10 33 99
2 7 8 99
3 4
4 12
5 99
6 19
7 4 99
我正在使用 MS Access,我知道我必须基本上使用 3 个连接(左、右、内)来获得完全连接,但我不确定如何构建查询。
有人可以给我一些示例 SQL 代码来为我指明如何产生这个结果的正确方向吗?
这是我目前所拥有的。这结合了所有表格,但看起来我仍然缺少一些数据。我是不是做错了什么:
SELECT Coventry.cptcode, Coventry.[Fee Schedule], CT6002.[Fee Schedule], Medicare.[Fee Schedule], OFSP.[Fee Schedule]
FROM ((Coventry LEFT JOIN CT6002 ON Coventry.cptcode = CT6002.cptcode) LEFT JOIN Medicare ON CT6002.cptcode = Medicare.cptcode) LEFT JOIN OFSP ON Medicare.cptcode = OFSP.cptcode
UNION
SELECT Coventry.cptcode, Coventry.[Fee Schedule], CT6002.[Fee Schedule], Medicare.[Fee Schedule], OFSP.[Fee Schedule]
FROM ((Coventry RIGHT JOIN CT6002 ON Coventry.cptcode = CT6002.cptcode) RIGHT JOIN Medicare ON CT6002.cptcode = Medicare.cptcode) RIGHT JOIN OFSP ON Medicare.cptcode = OFSP.cptcode
UNION
SELECT Coventry.cptcode, Coventry.[Fee Schedule], CT6002.[Fee Schedule], Medicare.[Fee Schedule], OFSP.[Fee Schedule]
FROM ((Coventry INNER JOIN CT6002 ON Coventry.cptcode = CT6002.cptcode) INNER JOIN Medicare ON CT6002.cptcode = Medicare.cptcode) INNER JOIN OFSP ON Medicare.cptcode = OFSP.cptcode;
【问题讨论】:
-
你用谷歌搜索了吗?
-
是的,但我找不到能准确回答这个问题的任何东西。我找到了一些关于使用所有三个连接子句的信息,但是连接子句后面的 ON 子句似乎要求我有一些相等的字段,但我想提取所有字段,即使没有匹配项另一个表,例如我的问题示例中的记录 5。
标签: sql ms-access join ms-access-2010