2015-10-05 22 views
0

在前面的文章的帮助下,我能够想出多个表连接的以下解决方案,以我想要加入的三个基本表为例,但是我得到PRIMARYKEY的参数问题。多次连接访问,询问参数值

select * 
FROM  (((
SELECT [PRIMARYKEY] FROM [TABLE 1] 
UNION 
SELECT [PRIMARYKEY] FROM [TABLE 2] 
UNION 
SELECT [PRIMARYKEY] FROM [TABLE 3])                AS   A 
LEFT JOIN [TABLE 1]  ON A.[PRIMARYKEY] =  [TABLE 1].[PRIMARYKEY]    ) 
LEFT JOIN [TABLE 2]  ON  A.[PRIMARYKEY]  = [TABLE 2].[PRIMARYKEY]    ) 
LEFT JOIN [TABLE 3]  ON  A.[PRIMARYKEY]  = [TABLE 3].[PRIMARYKEY] 

我的想法是让主键的完全不同的房源,然后离开加入到其他表,因为我知道有在访问没有完整连接。

有人看到我的脚本有问题吗?这是“AS A”部分将所有东西都扔掉吗?

+0

刚刚在MSAccess中试过 - 没有错误(当然,我必须更改列和表名称)。很可能你的一个表没有名为PRIMARYKEY的列? – Arvo

+0

谢谢你们的帮助。阿沃和@哈维。我试了一遍,它的工作。无论我在关系表上使用什么,我都关闭了已打开并关闭的表格,而无需保存。我刚才复制了我的脚本,这次它工作。不知道这篇文章是否还有好处,或者是否有人可以在将来使用上面的脚本。现在哈维的一个工作 – user4242750

回答

1

请试试这个,它使用别名:

SELECT * 
    FROM (((SELECT [PRIMARYKEY] AS MyField 
       FROM [TABLE 1] 
       UNION 
       SELECT [PRIMARYKEY] AS MyField 
       FROM [TABLE 2] 
       UNION 
       SELECT [PRIMARYKEY] AS MyField 
       FROM [TABLE 3] 
      ) AS A 
      LEFT JOIN [TABLE 1] 
        ON A.[MyField] = [TABLE 1].[PRIMARYKEY] 
      ) 
      LEFT JOIN [TABLE 2] 
        ON A.[MyField] = [TABLE 2].[PRIMARYKEY] 
     ) 
     LEFT JOIN [TABLE 3] 
       ON A.[MyField] = [TABLE 3].[PRIMARYKEY] 

你可以做笛卡尔在接入连接(这就是我知道全连接)。我经常使用称为dual的一行表来总是返回一行...(如在oracle中)。