Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access ODBC:不同数据库文件中的表之间的连接_Sql_Ms Access_Odbc - Fatal编程技术网

Sql Access ODBC:不同数据库文件中的表之间的连接

Sql Access ODBC:不同数据库文件中的表之间的连接,sql,ms-access,odbc,Sql,Ms Access,Odbc,假设我有多个表分布在不同的Access数据库文件*.mdb中,我想将其与join子句组合到一个数据集中。我现在看到的唯一解决方案是在Access数据库中创建链接表,除非有人知道更好更干净的解决方案 例如,我尝试过在[file\u name].tbl\u b1.pk=tbl\u a1.fk中创建一个SQL语句,如SELECT*FROM tbl\u a1 INTERNAR JOIN[file\u name].tbl\u b1 ON[file\u name].tbl\u b1,其中1不支持file\u

假设我有多个表分布在不同的Access数据库文件*.mdb中,我想将其与join子句组合到一个数据集中。我现在看到的唯一解决方案是在Access数据库中创建链接表,除非有人知道更好更干净的解决方案

例如,我尝试过在[file\u name].tbl\u b1.pk=tbl\u a1.fk中创建一个SQL语句,如SELECT*FROM tbl\u a1 INTERNAR JOIN[file\u name].tbl\u b1 ON[file\u name].tbl\u b1,其中1不支持file\u name

因此,我使用Microsoft Access创建了一个链接表,它可以在tbl_b1.pk=tbl_a1.fk其中1上使用SELECT*FROM tbl_a1 INNER JOIN tbl_b1

我希望看到一个以编程方式创建它的解决方案,因为机器B可能没有安装Access,并且预定义的数据库文件还不包括链接表。这些表也不一定是永久的。 Microsoft提供了一个仅使用Microsoft Access创建链接表的方法,但它没有告诉我如何以编程方式创建链接表

注:我使用RAD 10西雅图/VCL C++ +Builder和UNIDAC来使用ODBC驱动程序进行数据库连接,因此VBA不是一个选项。 解决方案:在我的例子中,我必须为第二个表SELECT*FROM tbl_a1 INNER JOIN[C:\path\db.mdb].tbl_b1设置一个表别名作为tbl_b1 ON tbl_b1.pk=tbl_a1.fk,其中1才能工作。感谢@Gord Thompson

如果您使用的是Microsoft自己的Access ODBC驱动程序,那么使用[mdbFileSpec].[tableName]的方法应该可以工作。我不能在C++环境中测试这个,但是我可以确认使用Python和pyDoc这不起作用…… -*-编码:utf-8-*- 导入pyodbc connStr= rDriver={Microsoft Access驱动程序*.mdb}; rDBQ=C:\Users\Public\test\a1.mdb; cnxn=pyodbc.connectconnStr sql=\ 挑选* 来自tbl-a1 内连接 [C:\\Users\\Public\\test\\b1.mdb].tbl-b1 在[C:\\Users\\Public\\test\\b1.mdb].tbl-b1.pk=tbl-a1.fk上 其中1 crsr=cnxn.executesql 对于crsr中的行: 打印行 crsr.close 关闭 。。。但这很好:

-*-编码:utf-8-*- 导入pyodbc connStr= rDriver={Microsoft Access驱动程序*.mdb}; rDBQ=C:\Users\Public\test\a1.mdb; cnxn=pyodbc.connectconnStr sql=\ 挑选* 从[tbl-a1]起,作为tbl_a1 内连接 [C:\\Users\\Public\\test\\b1.mdb]。[tbl-b1]作为tbl\U b1 关于tbl_b1.pk=tbl_a1.fk 其中1 crsr=cnxn.executesql 对于crsr中的行: 打印行 crsr.close 关闭 注意

我只使用了一次文件规范,并创建了表别名来引用这些表,然后 我在表名周围放了方括号,因为它们包含连字符,可能会被误解为负号。
欢迎来到SO,请在提问时更具体一点:您尝试了什么,您期望什么,等等。请看,您可以在某个mdb中的一个“输出”聚合表中链接表,然后将您的应用程序连接到此表Hello@Nehal,我尝试过的是创建一个SQL语句,如SELECT*FROM tbl-a1 INTERNAR JOIN[文件名]。tbl-b1 ON[文件名].tbl-b1.pk=tbl-a1.fk其中1 WHERE file_name不受支持。因此,我使用Microsoft Access创建了一个链接表,它可以与tbl-b1上tbl-a1内部连接tbl-b1的SELECT*配合使用。pk=tbl-a1.fk其中1。我希望看到一个以编程方式创建它的解决方案,因为机器B可能没有安装Access,并且预定义的数据库ase文件尚未包含链接表。这些表也不必是永久性的。您的应用程序是否使用实际的Microsoft Access ODBC驱动程序或OLEDB提供程序来访问数据库?@Gord Thompson ODBC驱动程序这非常有用,谢谢。我必须设置一个表别名才能在我的on子句中使用它。请有人对此答案进行投票.