我正在尝试通过 VBA 加入带有记录集的表。这可能吗?我基本上想加入两张表,但其中一张表在我加入之前需要进一步过滤。
问问题
3631 次
3 回答
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
于 2012-08-01T11:06:55.930 回答
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
结果放在数据库的另一个表中。或者,您可以将结果保存在记录集中。
于 2015-11-05T15:52:02.990 回答
0
我同意制作临时表。此外,根据本地表的大小,您可以创建一串值以传递给 SQL 服务器查询。(SELECT __ FROM __ WHERE ___ IN(值的字符串)。很棘手,但如果您的本地表很小并且连接显着减少了 SQL 查询结果,则可能很有用。
对于我的情况,本地表并没有减少我的服务器查询结果。所以我只是对我的本地表进行了更新。
于 2020-03-23T13:44:18.070 回答