【问题标题】:Joining on 3 csv files加入 3 个 csv 文件
【发布时间】:2020-04-07 13:06:16
【问题描述】:

我需要从 3 个不同的 CSV 文件(Adres.CSV、ID.CSV 和 Regios.CSV)中检索数据并将其合并到 Excel 表格中。

这条 SQL 语句运行良好,

StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats] " _
         & "FROM Adres.CSV Adres INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"

还有

StrSQL = "SELECT Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
         & "FROM Adres.CSV Adres INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats];"  

但是当我把它们组合成

StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
         & "FROM Adres.CSV Adres " _
         & "INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats]" _
         & "INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"

我收到一个操作员缺失的错误消息。

我忽略了什么?

【问题讨论】:

    标签: sql excel vba csv join


    【解决方案1】:

    这里有两个问题:

    1. 您在第 3 行和第 4 行之间缺少一个空格。
    2. JET/ACE SQL 要求您在执行多个连接时使用括号。

    这应该可以修复您看到的 sql 错误:

    StrSQL = "SELECT ID.[ID], Adres.[Naam], Adres.[Adres], Adres.[Plaats], Regio.[Regio] " _
             & "FROM (Adres.CSV Adres " _
             & "INNER JOIN Regios.CSV Regio ON Adres.[Plaats] = Regio.[Plaats]) " _
             & "INNER JOIN ID.CSV ID ON Adres.[Naam] = ID.[Naam];"
    

    您的字符串最终以...Regio.[Plaats]INNER JOIN ID.CSV... 进行评估。缺少空格会导致 sql 解析器错过您的第二个 INNER JOIN

    【讨论】:

    • 恐怕我们还没到那里,我又收到一条缺少操作员的消息:link
    • 我忘记了 JET SQL 要求您在执行多个连接时使用括号。我更新了我的答案,不太确定我的括号是否在正确的位置。试一试。
    • 啊,一百万,就是这样!我一定要把它写下来!!!
    • 很高兴为您提供帮助。如果对您有帮助,请考虑接受此答案:-)
    猜你喜欢
    • 2017-10-19
    • 2017-10-19
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多