簡體   English   中英

MS ACCESS中的sql查詢,其他數據庫的聯接和表

[英]sql query in MS ACCESS, joins and tables from other dbs

我試圖從不同的數據庫查詢表和left join與鏈接表我在DB的結果。 這是工作部分

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;

您可能已經猜到了...它不起作用...

正如我在評論中說的那樣,以下方法應該起作用:

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);

該模式... FROM DbandDetails IN 'G:\\allpathtomyfolder\\Db.accdb' ...可以用於具有單個數據源的查詢。 但是,當您嘗試包括其他數據源時,它會中斷。 而且,其他數據源位於當前數據庫還是遠程數據庫中似乎並不重要。

對於像您這樣的查詢,我發現用以FROM [G:\\allpathtomyfolder\\Db.accdb].DbandDetails括號括起來的數據庫路徑為表名添加前綴更容易: FROM [G:\\allpathtomyfolder\\Db.accdb].DbandDetails

我認為您還應該按照HoneyBadger的 建議重新定位WHERE子句。

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM