2014-02-10 88 views
1

我在'項目'表(postgreSQL數據庫)中有2種不同類型的記錄。一些項目與invoiceid關聯,其中有客戶信息關聯。我的物品表中的其他物品沒有關聯的發票號碼。SQL內部連接不返回空白值的記錄

我試圖返回發票日期和客戶名稱的項目列表。沒有發票或客戶關聯的項目也會顯示,但這些字段只是空白。問題出在我目前的sql語句。它只顯示與發票相關的項目。

select items.ItemID, items.qty, items.description, customers.firstname, 
customers.lastname, invoices.InvoiceDate, items.status 
from items 
inner join Invoices on items.InvoiceID = Invoices.InvoiceID 
inner join customers on Invoices.CustomerID = Customers.CustomerID 
where Items.Status = 'ONTIME' 
ORDER BY InvoiceDate asc 

任何想法如何讓所有記錄顯示,或者甚至可能嗎?沒有數據的字段是NULL,我不確定這是否是問題的一部分。

回答

5

你想用left outer join,而不是inner join

select i.ItemID, i.qty, i.description, c.firstname, 
     c.lastname, inv.InvoiceDate, i.status 
from items i left outer join 
    Invoices inv 
    on i.InvoiceID = inv.InvoiceID left outer join 
    customers c 
    on inv.CustomerID = c.CustomerID 
where i.Status = 'ONTIME' 
order by InvoiceDate asc; 

我還介紹了表的別名,使查詢有點更容易閱讀。

+0

作品完美,謝謝! –