1

我正在使用 ADODB 在我的 VBA 代码中从 SQL Server 中选择数据,并且我想加入几个查询。

假设我有两个查询:

query1 = _
"select tblA.x,tblB.y from tblA inner join tblB on tblA.x=tblB.x"

query2 = _
"select tblA.x,tblA.abc from tblA inner join " & _
"(select max(tblA.x) as maxX from tblA group by x) qryA on tblA.x=qryA.maxX"

我正在运行查询:

Public sub getRecordsets(objConn as ADODB.Connection,rs1 as ADODB.Recordset,rs2 as ADODB.Recordset)

rs1.Open query1, objConn
rs2.Open query2, objConn

End Sub

我想在第三个记录集中加入这两个查询。我知道我可以编写一个连接两个查询的长 SQL 语句,但我想将它们分开以使代码更易于维护。

如果我使用的是 MS Access,我将创建两个存储查询query1query2,然后从它们中选择如下:

select y,abc from query1 inner join query2 on query1.x=query2.x

有没有办法可以加入记录集?我没有在 SQL Server 数据库中创建 UDF 或视图的写入权限;如果我能够获得写访问权限,那我必须这样做吗?

4

2 回答 2

0

如果我是你,我会在 SQL Server 上执行所有带有 JOINS 的查询,因为 SQL Server 可以更快、更有效地处理连接。通过这种方式,您只会将实际需要的记录带入,而不是带入所有记录,然后在 Access 上过滤它们。

于 2013-10-04T19:45:19.193 回答
0

您不能加入记录集,因为这已经是客户端的数据结构。这就是 Muhammed Ali 想说的,你应该在服务器上执行完整的查询。(因为在链中处理记录集为时已晚)

以您想要的方式构建它是另一回事,尽管您最终会合并 SQL 语句,这是一个解析器/语法的东西,恕我直言,更具学术性。

实际上——我们会看看这个条目是否存在足够长的时间——我已经从你那里看到了很多问题,这些问题很有趣、很聪明,但也有些非同寻常。这迫使我发表评论,所以你可能会ping我。

一般来说,我会说netoffice可以让你的生活更轻松......

于 2013-10-20T00:10:35.760 回答