MySQL LEFT JOIN不使用多个表

时间:2013-07-09 12:48:07

标签: mysql left-join

我知道网络上有很多相关的问题, 第一个答案是GOOGLE它, 我不需要第一个答案,所以感谢每个人,第二个人将不胜感激。

我有4张桌子:

  

付款,InvoiceItem,用户,项目

关系:

  

付款 .InvoiceItem_Id< - >的 InvoiceItem .InvoiceItemId

     

付款 .User_Id< - > 用户 .UserID

     

InvoiceItem .Item_Id< - >的 .ItemsId

Payment.InvoiceItem_Id 是空的,所以我没有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< - >之间项目 .ItemsId和查询应该是对这些表的INNER JOIN。

提前感谢。

1 个答案:

答案 0 :(得分:0)

因为一旦您将外部联系到发票,在发票项目上执行内部联接需要存在所有发票项目,从而有效地在发票上击败您的左联接。