我正在尝试使用MS Access和SQL查询来自多个表的数据。该查询涉及大量标准。例如,这里是我目前使用的代码:
SELECT *
FROM [tblA]
IN "G:\path\data.mdb"
WHERE ((([tblA].[var1])="435"))
OR ((([tblA].[var1])="3"))
OR ((([tblA].[var1])="4"))
OR ((([tblA].[var1])="634"))
OR ((([tblA].[var1])="234"))
OR ((([tblA].[var1])="234"));
标准的数量可以高达50,并且每次有人使用此代码时它们都会有所不同。问题更严重,因为这是需要多次输入这些标准的较长代码的一部分。
我没有让用户输入条件,而是想创建一个以这些约束为主键的excel文件,然后将tblA中的var1设置为外键并引用excel表中的主键。那样我就可以跑了:
SELECT *
FROM [tblA]
IN "G:\path\data.mdb"
我只会得到符合上述所有条件的数据。当您使用IN语句连接到外部表时,是否有人知道如何创建这些关系?可以使用ALTER TABLE
吗?如果是这样,代码中的位置?
答案 0 :(得分:1)
在另一个数据库的表IN
和另一个文件中的电子表格之间创建实际关系可能很困难(或不可能),但出于特定目的,它实际上并不是必需的。如果你的标准是在这样的Excel表格中......
...那么你可以像这样使用WHERE var1 IN (SELECT ...)
子句:
SELECT *
FROM [tblA]
IN "C:\Users\Gord\Desktop\data.mdb"
WHERE
var1 IN (
SELECT CStr(var1)
FROM [Excel 8.0;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Users\Gord\Desktop\criteria.xls].[Sheet1$]
)