1

我正在尝试通过 VBA 加入带有记录集的表。这可能吗?我基本上想加入两张表,但其中一张表在我加入之前需要进一步过滤。

4

3 回答 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 查询将第一个表与临时表连接起来。
假设您的数据库中有一个表table1tableA

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 回答