【发布时间】:2016-01-20 09:17:28
【问题描述】:
假设我有多个表分布在不同的 Access 数据库文件 (*.mdb) 中,我想将这些表与“join”子句组合成一个数据集。目前我看到的唯一解决方案是在 Access 数据库中创建链接表,除非有人知道更好、更简洁的解决方案。
例如,我尝试过创建一个 SQL 语句,例如 SELECT * FROM tbl_a1 INNER JOIN [file_name].tbl_b1 ON [file_name].tbl_b1.pk=tbl_a1.fk WHERE 1,其中不支持“file_name”。
所以我使用 Microsoft Access 创建了一个链接表,它可以很好地与SELECT * FROM tbl_a1 INNER JOIN tbl_b1 ON tbl_b1.pk=tbl_a1.fk WHERE 1 配合使用。
我希望看到以编程方式创建它的解决方案,因为“机器 B”可能没有安装 Access,并且预定义的数据库文件还不包括链接表。这些表也不必是永久性的。 Microsoft 有一个documentation 如何仅使用 Microsoft Access 创建链接表,但它没有告诉我如何以编程方式进行。
注意:我正在使用带有 UniDac 的 RAD 10 Seattle/VCL C++ Builder 通过 ODBC 驱动程序进行数据库连接,因此 VBA 不是一个选项。
解决方案:在我的情况下,我必须为第二个表 SELECT * FROM tbl_a1 INNER JOIN [C:\path\db.mdb].tbl_b1 AS tbl_b1 ON tbl_b1.pk = tbl_a1.fk WHERE 1 设置表别名才能使其正常工作。感谢@Gord Thompson
【问题讨论】:
-
欢迎来到SO,请在提问时更具体一点:您尝试过什么,您期望什么等。请参阅how to ask
-
您可以在某个 mdb 中的一个“输出”聚合表中链接表,然后将您的应用程序连接到该表
-
你好@Nehal,我试过的东西是 f.e.在不支持“file_name”的情况下创建类似
SELECT * FROM tbl-a1 INNER JOIN [file_name].tbl-b1 ON [file_name].tbl-b1.pk=tbl-a1.fk WHERE 1的SQL 语句。因此,我使用 Microsoft Access 创建了一个链接表,它与SELECT * FROM tbl-a1 INNER JOIN tbl-b1 ON tbl-b1.pk=tbl-a1.fk WHERE 1配合得很好。我希望看到一个以编程方式创建它的解决方案,因为“机器 B”可能没有安装 Access,并且预定义的数据库文件还不包括链接表。这些表也不必是永久性的。 -
您的应用程序是否使用实际的 Microsoft Access ODBC 驱动程序或 OLEDB 提供程序来访问数据库?
-
@Gord Thompson ODBC 驱动程序