2012-11-08 84 views
-1

我在不同的地方SQL Server 2012中加入兩個表中的列到一個

兩個表

最終結果必須是

VendorName InvoiceNumber InvoiceTotal 

VendorName是表稱爲Vendors

InvoiceNumberInvoiceTotal是在一張叫Invoices

它需要顯示所有的v結果即使供應商沒有任何發票,也會顯示最大的發票總計第一個DESC並按字母順序排列供應商名稱。

我試圖發票加入到我的

SELECT VendorName FROM Vendors 

,但我想不通的語法:/

+0

請張貼您的架構。 – RedFilter

+2

你的意思是什麼*兩張桌子在不同的地方*?不同的數據庫不同的服務器 – RedFilter

+0

例如,您可以在[SQLZOO](http://sqlzoo.net)上找到一些很好的基本SQL教程。看看他們,他們會幫助你理解SQL語法! – Josien

回答

1

使用LEFT JOIN包括那些廠商沒有發票,像這樣:

SELECT 
    v.VendorName, i.InvoiceNumber, i.InvoiceTotal 
FROM Vendors v 
LEFT JOIN Invoices i ON v.Id = i.VendorID 
ORDER BY i.InvoiceTotal DESC, v.VendorName ASC 
0

你的意思是類似於:

select VendorName 
     ,Count(InvoiceAmount) As InvoiceNumber 
     ,Sum(InvoiceAmount) As InvoiceTotal 
    from Vendor 
    left join Invoices on Vendor.VendorId = Invoices.VendorId 
group by VendorName 
order by 3 Desc 
+0

爲什麼選擇「GROUP BY」?我沒有看到OP在詢問最大的'InvoiceTotal'值 - 他希望輸出**按該列排序 - 但沒有分組 - 不是? –

+0

只假定因爲他從來沒有告訴我們這個表有一個發票總額的合計字段......還有另外4個答案沒有他可以從中選擇。 –

1

您將希望使用LEFT JOIN來連接與兩個表相關的列上的兩個表。使用LEFT JOIN將返回所有vendors,即使他們沒有在invoices表中的條目:

select v.vendorname, 
    i.invoicenumber, 
    i.invoicetotal 
from vendors v 
left join invoices i 
    on v.vendorid = i.vendorid -- this is the column relating the two tables 
order by i.invoicetotal DESC, v.vendorname ASC 

如果您需要幫助學習JOIN語法,這裏是一個偉大的visual explanation of joins

1

你需要一個OUTER JOIN 。假設PK/FK是VendorID

SELECT v.VendorName, i.InvoiceNumber, i.InvoiceTotal 
FROM Vendors v 
LEFT OUTER JOIN Invoices i ON v.VendorID = i.VendorID 
ORDER BY v.VendorName ASC 
     , i.InvoiceTotal DESC 
+0

OP希望*顯示最大的發票總數* - 所以你應該按'InvoiceTotal'(而不是'InvoiceNumber')排序我相信 –

+1

@marc_s:是的,當然,謝謝。糾正。 –

1

嘗試:

SELECT Vendors.VendorName, Invoices.InvoiceNumber, Invoices.InvoiceTotal 
FROM Vendors LEFT JOIN Vendors.VendorID on Invoices.VendorId 
ORDER BY Invoices.InvoiceTotal DESC 

你想讓你的ventors被全部組合在一起,或可以在供應商是在結果多於1次?您可以使用SUM(Invoices.InvoiceTotal)進行比賽以獲取InvoiceTotals的總數。

+0

爲什麼選擇「GROUP BY」?我沒有看到OP在詢問最大的'InvoiceTotal'值 - 他希望輸出**按該列排序 - 但沒有分組 - 不是? –

+1

正確,將編輯:)誤解 –

相關問題