MS ACCESS中的SQL查询,来自其他dbs的联接和表

时间:2015-12-15 10:12:36

标签: sql ms-access

我正在尝试从不同的数据库查询表,并使用我在数据库中的链接表left join查询结果。 这是工作部分

SELECT * FROM DbandDetails
IN 'G:\allpathtomyfolder\Db.accdb'
WHERE(DbandDetails.Month = 10);

现在我试图将此查询的结果与我创建的Linked表连接起来,所以我试过了

SELECT * FROM DbandDetails
IN 'G:\allpathtomyfolder\Db.accdb'
WHERE(DbandDetails.Month = 10)
LEFT JOIN Mylinkedtable ON DbandDetails.code = Mylinkedtable.code;

你可能已经猜到了......它不起作用......

2 个答案:

答案 0 :(得分:2)

正如我在评论中所说,以下内容应该有效:

SELECT * FROM DbandDetails
IN 'G:\allpathtomyfolder\Db.accdb'
LEFT JOIN Mylinkedtable ON DbandDetails.code = Mylinkedtable.code
WHERE(DbandDetails.Month = 10);

修改

不熟悉MS Access语法,我不得不在这里猜测。但你能尝试一下:

SELECT * FROM DbandDetails
LEFT JOIN Mylinkedtable ON DbandDetails.code = Mylinkedtable.code
IN 'G:\allpathtomyfolder\Db.accdb'
WHERE(DbandDetails.Month = 10);

进一步修改

显然,此解决方案无法连接数据库中的表和文件中的表。另一种解决方案可能是:

SELECT   *
FROM     (
            SELECT * FROM DbandDetails
            IN 'G:\allpathtomyfolder\Db.accdb'
         ) DbandDetails
LEFT JOIN Mylinkedtable ON DbandDetails.code = Mylinkedtable.code
WHERE(DbandDetails.Month = 10);

答案 1 :(得分:2)

该模式... FROM DbandDetails IN 'G:\allpathtomyfolder\Db.accdb' ...可用于具有单个数据源的查询。但是,当您尝试包含其他数据源时,它会中断。并且附加数据源是否位于当前数据库或远程数据库中似乎并不重要。

对于像你这样的查询,我发现更容易为表名添加括号数据库路径,如下所示:FROM [G:\allpathtomyfolder\Db.accdb].DbandDetails

我认为你还应该将WHERE条款重新定位为HoneyBadger suggested ......

SELECT *
FROM
    [G:\allpathtomyfolder\Db.accdb].DbandDetails
    LEFT JOIN Mylinkedtable
    ON DbandDetails.code = Mylinkedtable.code
WHERE DbandDetails.Month = 10;

如果您遇到其他错误,这是我在修改您的时候用作我的指南的测试查询...

SELECT *
FROM
    [C:\share\Access\Contacts.accdb].Settings
    LEFT JOIN Dual
    ON Settings.ID = Dual.id
WHERE Settings.ID=1;