【问题标题】:MySQL LEFT JOIN not Working with multiple tablesMySQL LEFT JOIN 不能处理多个表
【发布时间】:2013-07-09 12:48:07
【问题描述】:

我知道网络上有很多相关的问题,而且, 第一个答案是 GOOGLE 它, 我不需要第一个答案,因此感谢每个人第二个答案。

我有 4 张桌子:

付款、发票项目、用户、项目

关系:

付款.InvoiceItem_Id InvoiceItem.InvoiceItemId

付款.User_Id 用户.UserID

InvoiceItem.Item_Id Items.ItemsId

Payment.InvoiceItem_Id 为 NULLABLE,所以我的付款没有 InvoiceItems

查询是:

SELECT Payment.Id, Payment.User_Id, Payment.InvoiceItem_Id, User.Name, Items.Name FROM Payment LEFT OUTER JOIN InvoiceItem ON Payment.InvoiceItem_Id = InvoiceItem.InvoiceItemId INNER JOIN User ON Payment.User_Id = User.UserID INNER JOIN Items ON InvoiceItem.Items_Id = Items.ItemsId WHERE Payment.User_Id = 724;

如果我将第三个 INNER JOIN 更改为 LEFT OUTER,我将获得 Payment 的所有记录,但我不知道为什么要更改它,因为第三个 INNER JOIN 在 InvoiceItem.Item_Id 之间Items.ItemsId 并且查询应该是对这些表的 INNER JOIN。

提前致谢。

【问题讨论】:

    标签: mysql left-join


    【解决方案1】:

    因为一旦您离开了 Invoice 的外部联接,对 Invoice 项目执行 Inner Join 需要所有 Invoice 项目都存在,从而有效地击败了您在 Invoice 上的左联接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 2013-05-14
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2016-12-16
      • 2012-06-21
      • 1970-01-01
      相关资源
      最近更新 更多