2013-07-09 35 views
0

我知道網上有很多相關的問題,並且, 第一個答案就是GOOGLE它, 我不需要第一個答案,所以要感謝每個人的第二個答案將不勝感激。MySQL LEFT JOIN不能使用多個表格

我有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; 
 

如果I需要時更改第三INNER JOIN到LEFT OUTER我會從支付的所有記錄,但我不知道我爲什麼要改變它,因爲第三INNER JOIN是InvoiceItem之間.Item_Id < - >項目。 ItemsId和查詢應該是INNER JOIN這些表上。

在此先感謝。

回答

0

因爲一旦您將外部加入到發票中,在發票項目上執行內部聯接需要存在所有發票項目,從而有效擊敗發票上的左側聯接。

+0

首先感謝 –