我正在尝试通过VBA加入带有记录集的表。这可能吗?我基本上想加入两个表,但在加入之前需要对其中一个表进行过滤。
答案 0 :(得分:2)
我怀疑你想要:
SELECT ID, field1, field2
FROM Table1 a
INNER JOIN (
SELECT ID, field3, field4
FROM Table2
WHERE field5 = 42 ) b
ON a.ID = b.ID
答案 1 :(得分:2)
据我所知,你不能在记录集上使用连接。即使有可能,它也会要求代码过于复杂而无用。)
我建议不要在联接中使用记录集,而是从记录集中创建一个临时表。
或者,使用您用于使记录集的查询直接创建临时表。然后使用SQL查询将第一个表与临时表连接起来 假设您的数据库中有一个表 table1 和 tableA ;
dim sqlString1 As String
dim sqlString2 As String
'the temporary table - this is what was in your recordset
sqlString1 = "SELECT field1, field2 FROM table1 INTO tempTable"
'the join of existing tableA with the tempTable
sqlString2 = "SELECT field1, field2, fieldA, fieldB INTO joinedTable"& _
"FROM table1"& _
"JOIN tableA ON field1 = fieldA"
CurrentDB.Execute sqlString1
CurrentDB.Execute sqlString2
请注意,我将JOIN
结果放在数据库中的另一个表中。或者,您可以将结果保存在记录集中。
答案 2 :(得分:0)
我同意制作一个临时表。另外,根据本地表的大小,您可以创建一个值字符串以传递给SQL Server查询。 (选择__ FROM __ WHERE ___ IN(值字符串)。棘手,但是如果您的本地表很小并且联接显着减少了SQL查询结果,则可能会有用。
对于我来说,本地表并没有减少我的服务器查询结果。所以我只是对本地表进行了更新。