2016-06-08 64 views
0

我有两张桌子,我想把它们制作成一张桌子。??结合,加入,插入查询Access 2007-2010?

表WASP_COLOR1

ID NAME COLOR CODE  
1 WASP01 RED  RD 
2 WASP04 RED  RD 
3 WASP19 BLUE  BL 

表WASP_COLOR2

ID NAME  SIZE  CODE  
1 WASP01  6  RD 
2 WASP13 10  BL 
3 WASP22  4  BL 

我是一个新手,我需要了解如何获得这些结果明确的方向。 (我要重复的合并。)

表WASP_COLOR1

ID NAME  COLOR SIZE CODE  
1 WASP01 RED  6  RD  
2 WASP04 RED    RD  
3 WASP19 BLUE    BL  
4 WASP13    10  BL  
5 WASP22    4  BL  

我试过如下:

SELECT 
    distinct wasp_color2.name, wasp_color2.size, 
    wasp_color2.code, wasp_color1.name, wasp_color1.color, 
    wasp_color1.code 
INTO 
    wasp_color1 
FROM 
    wasp_color2, wasp_color1; 

收到的错误

我想:

SELECT 
    distinct wasp_color2.name, wasp_color2.size, wasp_color2.code, 
    wasp_color1.name, wasp_color1.color, wasp_color1.code 
INTO 
    test 
FROM 
    wasp_color2, wasp_color1; 

建议eived 9行而不是5

我尝试:

SELECT 
    name.wasp_color1, name.wasp_color2, color, size, 
    code.wasp_color1, code.wasp_color2 
INTO 
    test 
FROM wasp_color2, wasp_color1; 

这要求一个参数值,这是一种手动输入和繁琐

我尝试:

SELECT 
    coalesce name.wasp_color1, name.wasp_color2, color, 
    size, code.wasp_color1, code.wasp_color2 
INTO 
    test 
FROM 
    wasp_color2, wasp_color1 full join; 

收到的错误

+0

在正常的SQL,你会使用一个完全外部连接,Access不支持的,所以你必须使用LEFT JOIN,右连接和一个工会 – xQbert

+0

感谢您的回复如此之快!我不确定在下面的语句中“wc1”和“wc2”是什么? FROM wasp_Color1 wc1 LEFT JOIN wasp_color2 wc2 – MCALLEN3388

+0

这些是表别名。而不是每次输入WASP_COLOR1或wasp_color2,而是告诉数据库引擎使用WC1。它使阅读变得更容易,输入更少。您可以通过这种方式别名表和列 – xQbert

回答

0

也许像这样的MS访问不支持全外连接。

这样做是为wasp_Color1生成两个数据集,在wasp_Color2中生成两个数据集,反之亦然。然后将这些结果合并成一个数据集,消除重复。

为了更好地理解的联接:看https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

Select WC1.Name, WC1.Color, WC2.Size, WC1.Code 
FROM wasp_Color1 wc1 
LEFT JOIN wasp_color2 wc2 
on wc1.Name = WC2.Name 
and wc1.code = wc2.code 

UNION 

Select WC2.Name, WC1.Color, WC2.Size, WC2.Code 
FROM wasp_Color1 wc1 
RIGHT JOIN wasp_color2 wc2 
on wc1.Name = WC2.Name 
and wc1.code = wc2.code