我无法在 Access 中进行简单的查询,可能是主键的问题
I can't make an easy query in Access, maybe problems with primary key
我有一个包含列 (29) 的 table,其中 FrontID 是主键,但我还有另外 10 个 table(每个只有 4 列)也有 FrontID列,但除此之外还有另一个名为 Desc1、Desc2 ... Desc10 的字段,我想要的是用其他 10 DescX 列填充第一个 table,这样只有当两行具有相同的 FrontID 时才会出现。
所有 tables 都是 .csv 格式,所以我在 Access 中创建了 tables 并在 .csv 中收费但是当我试图查询到综合了所有的信息,我得不到我想要的,我认为问题是我没有关联tables..
换句话说,我尝试创建一个包含 39 列 (29 + 10) 的 table 以查看当我导入 .csv 和 DescX 字段时它们是否可以加载,但它没有用。
知道如何解决这个问题吗?
例如。更大的 .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
所以我想要第一个 table 与新的 Desc1 colum 当 FRONT_ID 在原始 table(更大)和新的 table 中相同时。
提前致谢,
劳尔
好的,我认为这是一个更好的例子:
我有 3 个 table 例如:
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
有人可以帮助我吗?也许我需要写一些宏来在主 table 上添加新列?
你们都可以看到我是 Access 中的新手,所以我也很喜欢一些教程或一个不错的页面来阅读。
此致,
劳尔
你说你使用了内部连接的例子。这几乎是正确的方法:只需将 INNER JOIN 替换为 LEFT JOIN。 (使用您在问题中未看到的陈述查询)
内部联接表示它必须在主和其他两个 table 中都有一个条目。如果您使用左连接(Left on main table),即使 Table 2 或 3 中没有条目,您也会看到来自 Main Table 的条目。
我有一个包含列 (29) 的 table,其中 FrontID 是主键,但我还有另外 10 个 table(每个只有 4 列)也有 FrontID列,但除此之外还有另一个名为 Desc1、Desc2 ... Desc10 的字段,我想要的是用其他 10 DescX 列填充第一个 table,这样只有当两行具有相同的 FrontID 时才会出现。
所有 tables 都是 .csv 格式,所以我在 Access 中创建了 tables 并在 .csv 中收费但是当我试图查询到综合了所有的信息,我得不到我想要的,我认为问题是我没有关联tables..
换句话说,我尝试创建一个包含 39 列 (29 + 10) 的 table 以查看当我导入 .csv 和 DescX 字段时它们是否可以加载,但它没有用。
知道如何解决这个问题吗?
例如。更大的 .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
所以我想要第一个 table 与新的 Desc1 colum 当 FRONT_ID 在原始 table(更大)和新的 table 中相同时。
提前致谢, 劳尔
好的,我认为这是一个更好的例子:
我有 3 个 table 例如:
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
有人可以帮助我吗?也许我需要写一些宏来在主 table 上添加新列? 你们都可以看到我是 Access 中的新手,所以我也很喜欢一些教程或一个不错的页面来阅读。
此致, 劳尔
你说你使用了内部连接的例子。这几乎是正确的方法:只需将 INNER JOIN 替换为 LEFT JOIN。 (使用您在问题中未看到的陈述查询)
内部联接表示它必须在主和其他两个 table 中都有一个条目。如果您使用左连接(Left on main table),即使 Table 2 或 3 中没有条目,您也会看到来自 Main Table 的条目。