我无法在Access中轻松查询,可能是主键问题

时间:2015-10-19 22:02:05

标签: ms-access-2010

我有一个包含列(29)的表,其中FrontID是主键,但我有另外10个表(每个只有4列),它们也有FrontID列,但是还有另一个名为Desc1的字段,Desc2 ... Desc10和我想要的是用另一个10个DescX列填充第一个表,这样只有当两个行具有相同的FrontID时才会出现。

所有表格都是.csv格式,所以我在Access中创建了表格,并且我已经在.csv中收费了,但是当我试图让查询加密所有信息时,我无法获得我想要的是,我认为问题在于我没有把桌子关系起来......

换句话说,我尝试创建一个包含39列(29 + 10)的表,以查看在导入.csv DescX字段时它们是否可以加载但是它没有工作。

我知道如何解决这个问题?

EG。更大的.csv文件:

DDATE   xxx xxx FRONT_ID    xxx xxx xxx xxx     xxxxxx      xxx xxx xxx xxx     xxx  xxx    CCY xxx xxx xxx xxx xxx xxx xxx xxx xxx xxxxxx  xxx xxx xxx  xxx        xxx xxx xxx 

另外10个.csv就像这样:

DDATE   FRONT_ID    Desc1  xxx      xxx 

所以当原始表格(较大的)和新表格中的FRONT_ID相同时,我希望第一个表格带有新的Desc1列。

提前致谢, 劳尔

好的我认为这是一个更好的例子:

我有3个表格,例如:

    Main Table  |    TABLE 2           |     TABLE 3

 ID     Name    |    ID     Surname    |    ID   Phone

 1      Jhon    |     1      Surname1  |    1   666-555-444
 2      Mark    |     2      Surname2  |    5   777-777-777
 3      Susan   |     3      Surname3  |    6   123-456-789
 4      Peter   |
 5      Yod     |
 6      Samuel  |

我想要的是这样的:

FINAL TABLE

ID  Name    Surname     Phone

1   Jhon    Surname1    666-555-444
2   Mark    Surname2    
3   Susan   Surname3    
4   Peter       
5   Yod                 555-444-333
6   Samuel              444-333-222

我尝试这样的事情:

SELECT Table1.ID, Table1.Name, Table2.Surname, Table3.Phone AS Expr1
FROM Table1, Table2, Table3
WHERE Table2.ID=Table1.ID OR  Table3.ID=Table1.ID

我尝试使用INNER JOIN进行查询,但结果很糟糕,我不知道原因:

1   Jhon    Surname1    666-555-444

有人可以帮助我吗?也许我需要编写一些宏来在主表上添加新列? 正如你们所有人都可以在Access中看到的那样,我可以阅读一些教程或一个很好的页面来阅读。

祝你好运, 劳尔

1 个答案:

答案 0 :(得分:0)

您说过使用Inner Join作为示例。这几乎是正确的方法:只需用LEFT JOIN替换INNER JOIN。 (使用您在问题中未见的陈述查询)

内部联接表示它必须在main和其他两个表中都有一个条目。如果使用左连接(主表左侧),即使表2或表3中没有条目,您也会看到主表中的条目。

另见http://www.w3schools.com/sql/sql_join_left.asp