【问题标题】:Use multiple Inner join for SQL query in VBA在 VBA 中使用多个内连接进行 SQL 查询
【发布时间】:2021-03-14 18:34:09
【问题描述】:

我想通过 VBA excel 运行 sql 查询,下面是我为两个表内连接成功运行的代码。

现在我想编辑查询,在该查询中我可以借助 Inner join 组合更多的 2 个表。

    Sub SQL()

        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset

        strFile = ThisWorkbook.FullName
        strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
        & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

        Set cn = CreateObject("ADODB.Connection")
        Set rs = CreateObject("ADODB.Recordset")

        cn.Open strCon

        strSQL = "SELECT [Sheet2$].[Sr], [Code], [Family] FROM [Sheet3$] INNER JOIN [Sheet2$] ON [Sheet2$].[Sr]=[Sheet3$].[Sr]"

''Here i want to edit the code to combined more the 2 tables with the help of Inner join.

        rs.Open strSQL, cn

        Sheet3.Range("D1").CopyFromRecordset rs

        End Sub

例如:- 我在第 4 表中还有一张表,其中也提供了 Sr 标题。请指导我。

【问题讨论】:

    标签: sql vba excel


    【解决方案1】:

    如果您只想再添加一个连接,就足够了:

    strSQL = strSQL  & " INNER JOIN [Sheet4$] ON [Sheet4$].[Sr]=[Sheet3$].[Sr]"
    

    但是,您可能还想在 select 子句中添加一些字段。我的建议是,为所有字段添加工作表标识符,例如:[Sheet3$].[Code],如果在新加入的表中使用了字段名称,您将避免歧义。

    【讨论】:

    • 字段名为 Sr.open?也许尝试用 Sr_open 替换它。它是否适用于注释掉的 SQL 字符串?
    【解决方案2】:

    您必须在多个连接中使用括号:

    "FROM (( [Sheet3$] " & _ 
    "INNER JOIN [Sheet2$] ON [Sheet2$].[Sr]=[Sheet3$].[Sr] ) " & _
    "INNER JOIN [Sheet4$] ON [Sheet4$].[Sr]=[Sheet3$].[Sr] )"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多