【问题标题】:Join 3 tables using column common to all 3 tables使用所有 3 个表共有的列连接 3 个表
【发布时间】:2020-04-15 18:11:19
【问题描述】:

我是一个 SQL 新手,所以请多多包涵。我有三个按以下方式设置的表:

日期|国家|测试 1|测试 2|测试 3|等等。

三个表中的日期和国家列中的数据相同,不同之处在于测试列中的数据。我想使用 Join 从三个表中查询一个日期列和三个对应的测试列。 我打算只重新构建表,以便其他表中的测试列是一个表中的附加列,但我仍然想知道如何以这种方式使用 Join。这就是我目前所拥有的,尽管它抛出一个错误,说 FROM 子句的语法有错误。值得注意的是,我正在使用 Access DB 在 VBA 中运行此查询。

     SELECT r.CRDate, r.Test, p.Test, z.Test
     FROM CountryRaw as r
         INNER JOIN CountryPct as p ON p.CPctDate = r.CRDate
         INNER JOIN CountryZ as z ON z.CZDate = p.CPctDate
     WHERE r.Country = 'US' AND p.Country = 'US' AND z.Country = 'US'

我遇到了一些使用 SELECT COALESCE(r.CRDate, p.CPctDate, z.CZDate) 开始的东西,但我没有得到任何结果。

【问题讨论】:

    标签: sql excel vba ms-access


    【解决方案1】:

    MS Access 需要额外的括号。所以试试这个:

    SELECT r.CRDate, r.Test, p.Test, z.Test
    FROM (CountryRaw as r INNER JOIN
          CountryPct as p
          ON p.CPctDate = r.CRDate
         ) INNER JOIN
         CountryZ as z
         ON z.CZDate = p.CPctDate
     WHERE r.Country = 'US' AND p.Country = 'US' AND z.Country = 'US'
    

    【讨论】:

    • 太棒了。对访问特定于 SQL 的修改有用的资源有什么建议吗?另外,如果我在z.CZDate = r.CRDate 上加入第三张表,这意味着我将通过第一个表加入后两张表,这有关系吗?
    • @MichaelSmith 。 . .不。我的建议始终是退出 MS Access。
    • 哈!很高兴知道。我正在 PostGreSQL 中学习 SQL。我需要找出我公司使用的 dbms。
    猜你喜欢
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2019-11-06
    • 2012-04-29
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多