我正在使用 Access 2007 并且对此比较陌生,所以请耐心等待。
情况
我创建了一个简化的示例来分享。
我的数据库中有一组经常更改的表。有时有十几个表,有时只有 4 或 5 个。所有表共享一组重要信息,我想将这些数据收集到一个新表中。
示例:假设我们有以下表格和字段:
Table1 : Name, PhoneNumber, PostalCode,...
Table2 : Name, Phone, PostalCode, Address,...
Table3 : Name, PhoneNo, Address, DateOfBirth,...
Table4 : Name, PhoneNumber, Favorite Food, ...
Etc....
我已经编写了一个查询,以将重要信息(在本例中为:姓名和电话号码)纳入一种“主列表”:
SELECT Name, PhoneNumber
FROM Table1
UNION
SELECT Name, Phone AS PhoneNumber
FROM Table2
UNION
SELECT Name, PhoneNo AS PhoneNumber
FROM Table3
UNION
etc...
;
问题
我正在尝试找到一种方法来编译相同的“主列表”,即使某些表不在数据库中。假设我们只有 Table1 和 Table3。无论如何,只有当它存在时才将表添加到联合查询中?和我在 SQL 方面一样糟糕,我在 VBA 方面更差。不知何故,我怀疑那里有可能,但我想我会问。
基本上,我正在尝试将其转换为 SQL:
SELECT Name, PhoneNumber
FROM Table1 (IF IT EXISTS)
UNION
SELECT Name, Phone AS PhoneNumber
FROM Table2 (IF IT EXISTS)
UNION
SELECT Name, PhoneNo AS PhoneNumber
FROM Table3 (IF IT EXISTS)
UNION
etc...
;
我收到一条错误消息,提示 Access 找不到输入表。我发现我可以使用以下代码来确定表是否存在:
SELECT Count(*) AS Exists, "Table1" From MsysObjects
WHERE type=1
解决方案有没有可能涉及这个?
提前致谢!!