【问题标题】:Join from three tables从三个表连接
【发布时间】:2016-11-11 16:55:03
【问题描述】:

我在数据库中有三个表(括号中是我需要的列);

  • 字母数据(发票、DateRaised、金额、员工)

  • TL Auth(发票)

  • 代理(团队负责人)

我目前试图用来将所有这些列放入一个查询中的代码是这样的;

SELECT Alphadata.Invoice, Alphadata.DateRaised, Alphadata.Amount, Alphadata.Staff, Agents.TeamLeader, TlAuth.Invoice

FROM Alphadata 

INNER JOIN TlAuth ON Alphadata.invoice = TlAuth.invoice

INNER JOIN Agents.Alphaname = Alphadata.Staff;

我想我错过了一些东西。但是当我删除代理(最后一行)时,我已经填充了 AlphaData 和 TL Auth 列,但第二次我重新添加它出错了。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您在这一行中漏掉了表名和ON

    INNER JOIN Agents ON Agents.Alphaname = Alphadata.Staff;
    

    【讨论】:

    • 我刚刚添加了它,现在似乎出现了语法错误(缺少运算符)。认为我在其他地方可能有问题?
    【解决方案2】:
        SELECT Alphadata.Invoice, Alphadata.DateRaised, Alphadata.Amount, Alphadata.Staff, Agents.TeamLeader, TlAuth.Invoice
        FROM (Alphadata 
        INNER JOIN TlAuth ON Alphadata.invoice = TlAuth.invoice)
        INNER JOIN Agents ON Agents.Alphaname = Alphadata.Staff;
    

    试试上面的。如果您省略 ON 子句,这将导致代理和 Alphadata 的笛卡尔积。您可以阅读有关笛卡尔积的更多信息here

    编辑 1: 从您的评论中我猜您正在使用 MS Access?如果是这样,我发现如果您有多个JOIN - see here,则需要括号。我已经在上面的查询中添加了它们。请重试。

    【讨论】:

    • 是的,我已经复制了这个,现在我遇到了语法错误(缺少运算符)。不是 100% 的问题是阅读这篇文章,它的目标是正确的东西!
    • 您在使用 MS Access 吗?
    • @Nik 请使用上述更改重试。
    • 安东。那工作得很好。是的下一个问题我会确保我指出我在 Access 中。再次感谢,周五愉快!
    • @Nik 很高兴我提供了帮助 :) 如果有帮助,请点赞我的答案,以便它出现在顶部,以便其他人可以先看到。
    【解决方案3】:

    您缺少第二个和第三个表的连接条件。此外,如果您使用表 aliases,则在编写 SQL 查询时会获得良好的效果。请注意,在下面的更正查询中,我已为您的查询中的三个表添加别名。然后,您可以使用这些别名来引用各个列,并且查询更易于阅读。

    SELECT t1.Invoice,
           t1.DateRaised,
           t1.Amount,
           t1.Staff,
           t2.Invoice,
           t3.TeamLeader,
    FROM Alphadata t1                      -- t1, t2 and t3 are aliases, or nicknames
    INNER JOIN TlAuth t2                   -- for the actual tables in your query
        ON t1.invoice = t2.invoice
    INNER JOIN Agents t3
        ON t3.Alphaname = t1.Staff;
    

    【讨论】:

      猜你喜欢
      • 2016-12-20
      • 2018-11-06
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      相关资源
      最近更新 更多