[英]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.